我有一个包含数组的对象列表,其中一个值如下所示:
const obj_arr = [
{'key': ['value-1', 'value-2', 'value-3', 'value-2', 'value-3']},
{'key': ['value-3', 'value-1', 'value-2', 'value-1', 'value-3']},
{'key': ['value-2', 'value-1', 'value-4', 'value-3', 'value-5']}
];如何获取此值列表并仅将唯一项映射到数组?
到目前为止,我已经做到了:
const obj_arr = [{
'key': ['value-1', 'value-2', 'value-3', 'value-2', 'value-3']
},
{
'key': ['value-3', 'value-1', 'value-2', 'value-1', 'value-3']
},
{
'key': ['value-2', 'value-1', 'value-4', 'value-3', 'value-5']
}
];
let unique_arr = [...new Set(obj_arr.map(record => record['key']))];
console.log(unique_arr);
/*
let unique_arr2 = [...new Set(obj_arr.flatMap(record => record['key']))];
console.log('using guidance from Barmar: ', unique_arr2);
*/.as-console-wrapper { max-height: 100% !important; top: 0 }
但这只会让我返回这样一个独特的数组:
unique_arr = [
['value-1', 'value-2', 'value-3', 'value-2', 'value-3'],
['value-3', 'value-1', 'value-2', 'value-1', 'value-3'],
['value-2', 'value-1', 'value-4', 'value-3', 'value-5']
]我真正需要的是:
unique_arr = ['value-1', 'value-2', 'value-3', 'value-4', 'value-5']发布于 2022-04-28 20:16:31
您可以映射对象的值,并为构造函数获取一个平面数组。
const
array = [{ key: ['value-1', 'value-2', 'value-3', 'value-2', 'value-3'] }, { key: ['value-3', 'value-1', 'value-2', 'value-1', 'value-3'] }, { key: ['value-2', 'value-1', 'value-4', 'value-3', 'value-5'] }],
unique = [...new Set(array.map(Object.values).flat(Infinity))];
console.log(unique);
发布于 2022-04-28 20:30:09
我不知道这是不是你想要的结果
let uniqueArrReduce = [...new Set(obj_arr.reduce((acc, el) => [...acc, ...el.key], []) )]有地图和平面
let uniqueArrMapFlat = [...new Set(obj_arr.map(el => el.key).flat())]https://stackoverflow.com/questions/72049649
复制相似问题