Javascript 扁平化json,使一个属性为key,另一个属性为value
我有以下格式的数据Javascript 扁平化json,使一个属性为key,另一个属性为value,javascript,json,Javascript,Json,我有以下格式的数据 var array = [{"name":"abc","boss":"def","sub":[{"schema":"a","data":1},{"schema":"b","data":0},{"schema":"c","data":0}]}, . . . ] 我希望将其转换为以下结构: [{"name":"abc","boss":"def","a":1,"b":0,"c":0}, . . . ] 根据答案。。我试过 grouped = []
var array = [{"name":"abc","boss":"def","sub":[{"schema":"a","data":1},{"schema":"b","data":0},{"schema":"c","data":0}]},
.
.
.
]
我希望将其转换为以下结构:
[{"name":"abc","boss":"def","a":1,"b":0,"c":0},
.
.
.
]
根据答案。。我试过
grouped = [];
array.forEach(function (a) {
if (!this[a.name]||!this[a.boss]) {
this[a.name] = { name: a.name, boss:a.boss };
grouped.push(this[a.name]);
}
this[a.name][a.sub.schema] = (this[a.name][a.sub.schema] || 0) + a.sub.data;
}, Object.create(null));
console.log(grouped);
上面给出了undefined:NaN作为结果对象中的第三个属性
我们衷心感谢您的帮助
谢谢您可能希望
将子对象减少为项目的属性
以下代码将数组中的项映射到一个新数组,该数组包含展开的项:
array = array.map(function(item) {
item = item.sub.reduce(function(x,y) { return x[y.schema] = y.data, x; }, item);
delete item.sub;
return item;
});
您可能希望将子对象减少为项目的属性
以下代码将数组中的项映射到一个新数组,该数组包含展开的项:
array = array.map(function(item) {
item = item.sub.reduce(function(x,y) { return x[y.schema] = y.data, x; }, item);
delete item.sub;
return item;
});
简单地试试这个
var arr = [];
array.forEach(function(ele){
var obj = {};obj.name=ele.name;
obj.boss=ele.boss;
ele.sub.forEach(function(e){
obj[e.schema] = e.data
});
arr.push(obj)
});
简单地试试这个
var arr = [];
array.forEach(function(ele){
var obj = {};obj.name=ele.name;
obj.boss=ele.boss;
ele.sub.forEach(function(e){
obj[e.schema] = e.data
});
arr.push(obj)
});
a.sub
是一个数组。您必须对其进行迭代a.sub
是一个数组。您必须重复使用逗号运算符,就像使用逗号运算符一样