我在angularjs中有一组对象
var list = [{id: 'foo' , value:'bar1'},
{id: 'foo1' , value:'bar1'}];
我想为第一个id
添加一个等于'foo'
格式化JSON数据:
[
{
"id":'foo',
"value":'bar1',
"children":{
id:'foo',
value:'baar'
}
},
{
"id":'foo1',
"value":'bar1'
}
];
我试过了
var tempList = {id:'foo', value:'baar'};
if(list.id =='foo' )
list.id.children = tempList ;
但它没有插入值
答案 0 :(得分:1)
使用map
函数将属性添加到对象
var list = [
{id: 'foo' , value:'bar1'},
{id: 'foo1' , value:'bar1'}
];
var tempList = {id:'foo', value:'baar'};
list = list.map(function(obj){
if(obj.id =='foo'){
obj.children = tempList ;
}
return obj
})
console.log(list)

答案 1 :(得分:0)
如果要匹配父列表和子列表的ID,则必须使用foreach
,然后使用它 -
angular.forEach(list , function(value, key){
if(value.id== tempList.id)
obj.children = tempList ;
});
希望它能运作
答案 2 :(得分:0)
试试这个,但这会覆盖id值:
var list = [{id: 'foo' ,
value:'bar1'},
{id: 'foo1' ,
value:'bar1'}];
var tempList = {id:'foo', value:'baar'};
list = list.map(function(obj){
if(obj.id == 'foo')
{
delete obj.id;
obj.id = {};
obj.id.children = tempList ;
}
return obj;
});
console.log(list);
答案 3 :(得分:0)
观察: if(list.id == 'foo')
语法无效,因为list
是一个对象数组。
因此,您可以像list[index].id
而不是list.id
一样访问ID。
因此,要迭代列表数组,您可以使用JavaScript for...in循环。
<强>样本强>
var list = [{id: 'foo' , value:'bar1'},
{id: 'foo1' , value:'bar1'}];
for (var i in list) {
if(list[i].id =='foo') {
list[i].children = {
id:'foo',
value:'baar'
};
}
};
console.log(list);