javascript - 如何向 JSON 数组添加新属性?

标签 javascript arrays json

我试图将新属性附加到一些 JSON 对象,但根本没有。我怎样才能做到这一点?

例如,这是我的 JSON 数组:

var eventsArray;

    eventsArray = [

    {
        "title" : "Marco 1",
        "user": "Marco",
        "start" : "2016-01-12T16:00:00-05:00",
        "end" : "2016-01-12T17:00:00-05:00"
    }, {
        "title" : "Marco 2",
        "user": "Marco",
        "start" : "2016-01-12T10:00:00-05:00",
        "end" : "2016-01-12T12:00:00-05:00"
    }, {
        "title" : "Marta 1",
        "user": "Marta",
        "start" : "2016-01-12T09:00:00-05:00",
        "end" : "2016-01-12T10:00:00-05:00"
    }, {
        "title" : "Marta 2",
        "user": "Marta",
        "start" : "2016-01-13T09:00:00-05:00",
        "end" : "2016-01-13T10:00:00-05:00"
    }, {
        "title" : "Veronica 1",
        "user": "Veronica",
        "start" : "2016-01-12T13:00:00-05:00",
        "end" : "2016-01-12T14:00:00-05:00"
    }, {
        "title" : "Veronica 2",
        "user": "Marco",
        "start" : "2016-01-11T13:00:00-05:00",
        "end" : "2016-01-11T14:00:00-05:00"
    }

    ];

然后我需要向用户 Veronica 添加一个新属性,例如 "color": "red",即:

var eventsArray;

eventsArray = [

{
    "title" : "Marco event 1",
    "user": "Marco",
    "start" : "2016-01-12T16:00:00-05:00",
    "end" : "2016-01-12T17:00:00-05:00"
}, {
    "title" : "Marco event 2",
    "user": "Marco",
    "start" : "2016-01-12T10:00:00-05:00",
    "end" : "2016-01-12T12:00:00-05:00"
}, {
    "title" : "Marta event 1",
    "user": "Marta",
    "start" : "2016-01-12T09:00:00-05:00",
    "end" : "2016-01-12T10:00:00-05:00"
}, {
    "title" : "Marta event 2",
    "user": "Marta",
    "start" : "2016-01-13T09:00:00-05:00",
    "end" : "2016-01-13T10:00:00-05:00"
}, {
    "title" : "Veronica event 1",
    "user": "Veronica",
    "start" : "2016-01-12T13:00:00-05:00",
    "end" : "2016-01-12T14:00:00-05:00",
    "color" : "red"
}, {
    "title" : "Veronica event 2",
    "user": "Veronica",
    "start" : "2016-01-11T13:00:00-05:00",
    "end" : "2016-01-11T14:00:00-05:00",
    "color" : "red"
}

];

上面我刚刚(手动)添加了“颜色”:“红色”,仅添加到具有“user”===“Veronica”(后两个)的对象。我如何通过 JavaScript 做到这一点?

我尝试了一些方法但没有成功,例如:

eventsArray[4].color = "red";
eventsArray[5].color = "red";

或者:

eventsArray.user["Veronica"].color = "red";
eventsArray.user["Veronica"].color = "red";

来 self 学习使用 JSON 的几天。

请注意,在这种特定情况下,具有不同属性的对象不会出现任何问题:我的程序不会爆炸! :P

谢谢。

最佳答案

有很多方法可以做到这一点。

这是一种简单的方法:

eventsArray.forEach( function( event ) {
    if( event.user == 'Veronica' ) event.color = 'red';
});

当然,您可能希望对其他用户和颜色执行此操作。因此最好将其概括为一个函数:

function setUserColor( events, user, color ) {
    events.forEach( function( event ) {
        if( event.user == user ) event.color = color;
    });
}

然后你可以这样调用它:

setUserColor( eventsArray, 'Veronica', 'red' );

现在您也可以为其他用户执行相同的操作:

setUserColor( eventsArray, 'Marta', 'green' );

关于javascript - 如何向 JSON 数组添加新属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36278836/

相关文章:

php - 用 mysql 数组填充 php 表单字段(点击)

c++ - 如何使用 void 函数从类创建数组

python - 解码 JSON 字符串中的 UTF-8 编码

asp.net - 如何在asp.net 3.5中使用Json?

javascript - 变换 : translateY Not Working on Style Attribute in IE/Edge

javascript - 如何提取表中特定列的第二低值?

javascript - 尝试创建一个改变背景颜色的按钮

java - 在JAVA中存储格式化名称的数组?

javascript - 在 Laravel 中更改 .vue 文件会自动更改不相关的 CSS

java - 如何使用 android 从 Nest API 检索 Json 对象