我有以下数组,它有一个包含嵌套数组的对象,而这些数组又有自己的对象:
var list = [{
one: [{key: 1, value: 'eng1'}, {key: 2, value: 'eng2'}],
two: [{key: 1, value: 'esp1'}, {key: 2, value: 'esp2'}]
}];
我想通过嵌套数组对象中的key属性对上面的数据进行分组。以下是所需的结构:
var grouped = [
{
key: 1,
group: {
one: {
value: 'eng1'
},
two: {
value: 'esp1'
}
}
},
{
key: 2,
group: {
one: {
value: 'eng2'
},
two: {
value: 'esp2'
}
}
}
]
我已经尝试了很多方法来实现上述结构,但无济于事。我尝试过使用reduce
,但如果对象没有深度嵌套,则主要适用。我的问题是这些数组嵌套在对象中,而密钥嵌入在这些对象中。非常感谢您的帮助。
要求是不使用任何库,如下划线或lodash。我必须使用普通的JS。
答案 0 :(得分:3)
由于您的数据结构,您可以使用多个let v1 = fromList[1..10]
let v2 = fromList[2..11]
let v = Data.Vector.zip v1 v2
循环并添加到新数组。
forEach

答案 1 :(得分:1)
你可以试试这个:
var list = [{
one: [{key: 1, value: 'eng1'}, {key: 2, value: 'eng2'}],
two: [{key: 1, value: 'esp1'}, {key: 2, value: 'esp2'}]
}];
var grouped = [];
list.forEach(function(e) {
Object.keys(e).forEach(function(k) {
var that = this;
e[k].forEach(function(a) {
if(!that[a.key]) grouped.push(that[a.key] = {key: a.key, group: {}})
Object.assign(that[a.key].group, {[k]: {value: a.value}})
})
}, {})
})
console.log(grouped)