如何向JSON数组添加新属性
How to add a new property to a JSON array?
我正在尝试将新属性附加到一些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"
}
];
在上面,我只是(手动)添加了"color":"red",仅用于具有"user"==="Veronica"(后两者)的对象。如何通过JavaScript实现这一点?
我尝试了一些没有成功的方法,例如:
eventsArray[4].color = "red";
eventsArray[5].color = "red";
或:
eventsArray.user["Veronica"].color = "red";
eventsArray.user["Veronica"].color = "red";
是从几天开始我学习使用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' );
这里有一个基本的。
for(var i = 0; i < eventsArray.length; i++){
if(eventsArray[i].user === "Veronica" {
eventsArray[i].color = "red";
}
}
相关文章:
- 创建新属性后的 JSON 空属性
- chart.js 2.0为数据集添加了新属性
- 当组件准备就绪时,如何在Polymer中动态注册新属性
- 为for循环中的对象添加新属性
- 复制第一个属性's值,然后使用第一个属性的值创建新属性
- 调用ko.applyBindings后,向Knockout视图模型添加新属性
- 如何向JSON数组添加新属性
- 在对象上迭代并添加新属性
- 在AngularJS中对指令的隔离作用域设置新属性
- 在knocket js中应用绑定后,向视图模型添加新属性
- 护照个人资料未通过新属性
- 如何在 CKEditor 表的单元格属性中添加新属性
- 无法向 Mongoose 查询返回的对象添加新属性
- 有没有办法让 Javascript 在将新属性添加到给定对象时抛出错误
- W3C 设置新属性
- 是否可以向现有 JSON 数据添加新属性
- 使用 contructor 参数将新属性添加到原型
- 如何为 html5 标签创建新属性
- 创建新属性 - JS / 边缘动画
- 和服:修改数据、分解字符串和添加新属性的功能