gpt4 book ai didi

javascript - 对嵌套的 javascript 数组中的对象进行分组

转载 作者:行者123 更新时间:2023-11-29 17:48:45 25 4
gpt4 key购买 nike

我有以下数组,它有一个包含嵌套数组的对象,而嵌套数组又拥有自己的对象:

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 但这主要适用于对象嵌套不深的情况。我的问题是数组嵌套在对象内部并且键嵌入在这些对象中。非常感谢您的帮助。

要求是不使用任何库,如 underscore 或 lodash。我必须使用纯 JS 来实现它。

最佳答案

由于您的数据结构,您可以使用多个 forEach 循环并添加到新数组。

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)

关于javascript - 对嵌套的 javascript 数组中的对象进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46248832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com