如何在 Javascript 中将嵌套对象合并到它们的父对象中
How to merge nested objects into their parents in Javascript?
我正在尝试在 Angular 中使用过滤功能.js但它不适用于对象。
如何使用 Javascript 将嵌套对象合并到其父对象中?
例如,我想把这个转过来:
{
"data" : [ {
"character" : {
"realm" : 1,
"displayName" : "John",
},
"points" : 1388.0,
"wins" : 84,
"losses" : 31
}, {
"character" : {
"realm" : 1,
"displayName" : "Steven",
},
"points" : 1363.0,
"wins" : 96,
"losses" : 24
}, {
"character" : {
"realm" : 1,
"displayName" : "Mark",
},
"points" : 1322.0,
"wins" : 154,
"losses" : 43
}
]}
进入这个:
{
"data" : [ {
"realm" : 1,
"displayName" : "John",
"points" : 1388.0,
"wins" : 84,
"losses" : 31
}, {
"realm" : 1,
"displayName" : "Steven",
"points" : 1363.0,
"wins" : 96,
"losses" : 24
}, {
"realm" : 1,
"displayName" : "Mark",
"points" : 1322.0,
"wins" : 154,
"losses" : 43
}
]}
有人可以帮助我吗?
您可以使用
extend
(https://docs.angularjs.org/api/ng/function/angular.extend(循环和分配:
for (var i = 0; i < data.length; i++) {
angular.extend(data[i], data[i].character) //move properties from character to the parent
delete data[i].character; //delete the "character" key
}
纯Javascript方法:
var source = {
"data" : [ {
"character" : { "realm" : 1, "displayName" : "John" },
"points" : 1388.0,
"wins" : 84,
"losses" : 31
}, {
"character" : { "realm" : 1, "displayName" : "Steven" },
"points" : 1363.0,
"wins" : 96,
"losses" : 24
}, {
"character" : { "realm" : 1, "displayName" : "Mark" },
"points" : 1322.0,
"wins" : 154,
"losses" : 43
}
]}
source.data.forEach(function(item) {
var character = item.character;
delete item.character;
for(var prop in character) {
item[prop] = character[prop];
}
});
console.log(source);
使用
var obj = {
"data": [{
"character": {
"realm": 1,
"displayName": "John",
},
"points": 1388.0,
"wins": 84,
"losses": 31
}, {
"character": {
"realm": 1,
"displayName": "Steven",
},
"points": 1363.0,
"wins": 96,
"losses": 24
}, {
"character": {
"realm": 1,
"displayName": "Mark",
},
"points": 1322.0,
"wins": 154,
"losses": 43
}]
};
for (var key in obj.data) {
obj.data[key].realm = obj.data[key].character.realm; // store the realm key to the obj
obj.data[key].displayName = obj.data[key].character.displayName; // store the displayName key to the obj
delete obj.data[key].character; // delete a character key
}
相关文章:
- 将两个数组与对象合并
- 如何使用ES6将两个具有函数的对象合并为一个新对象
- 将值和属性从一个对象合并到另一个对象
- 如何将两个json对象合并为一个json
- 将来自多个控制器的 AngularJS 范围对象合并到一个对象中
- 在 node.js 中将 2 个 json 对象合并为一个
- Angular JS将2个对象合并为第三个对象
- JavaScript - 将两个数组对象合并为一个arr对象,然后遍历每个索引/对象
- 将同一数组中的多个对象合并为一个对象
- 如何在 Javascript 中将嵌套对象合并到它们的父对象中
- 将状态与来自循环反应的对象合并
- 将数组合并到对象以及对象合并到数组
- 如何将两个d3对象合并为一个进行批量操作
- 将JSON对象与JSON子对象合并
- 将一个对象合并到另一个对象的最佳方式(无覆盖)
- 使用jQuery扩展方法将函数与对象合并,为什么'只返回s的函数
- 如何将数组与值为数组的对象合并
- 循环遍历数组以查找具有匹配id的所有对象,并将这些对象合并到数组中的一个元素中
- Javascript将对象合并到key ->一组值
- 如何将两个查询对象合并为一个查询对象