基于 JavaScript 中键属性对对象进行分组
我们有一个 parentArray,它包含许多子数组,每个子数组都是一个包含两个属性(键和值)的对象数组。在一个子数组中,可以确认两个对象不能有相同的键,但是所有子数组都有一组相同的 n 个键,其中 n 是子数组的大小。
我们的工作是准备一个对象,其中键为对象的键,值是包含该特定键的所有值的数组。
以下是一个示例 parent 数组−
const parentArray = [[ { key: 123, value: 'India' }, { key: 124, value: 'USA' }, { key: 125, value: 'Japan' }, { key: 126, value: 'Denmark' }, { key: 127, value: 'Austria' }, ], [ { key: 124, value: 'Kenya' }, { key: 126, value: 'UK' }, { key: 123, value: 'Germany' }, { key: 127, value: 'Spain' }, { key: 125, value: 'Portugal' }, ]];
我们将遍历 parent 数组,然后逐个遍历所有子数组,如果我们找到匹配的键,我们会将其推入值数组,否则我们会创建一个新的值数组。
完整的代码如下所示−
const parentArray = [[ { key: 123, value: 'India' }, { key: 124, value: 'USA' }, { key: 125, value: 'Japan' }, { key: 126, value: 'Denmark' }, { key: 127, value: 'Austria' }, ], [ { key: 124, value: 'Kenya' }, { key: 126, value: 'UK' }, { key: 123, value: 'Germany' }, { key: 127, value: 'Spain' }, { key: 125, value: 'Portugal' }, ]]; const map = {}; parentArray.forEach(arr => { arr.forEach(obj => { const { key, value } = obj; if(map[key]){ map[key].push(value); }else{ map[key] = [value] } }) }); console.log(map);
控制台中的输出结果如下−
{ '123': [ 'India', 'Germany' ], '124': [ 'USA', 'Kenya' ], '125': [ 'Japan', 'Portugal' ], '126': [ 'Denmark', 'UK' ], '127': [ 'Austria', 'Spain' ] }
广告