首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将对象中包含的记录列表中的项映射到唯一数组

如何将对象中包含的记录列表中的项映射到唯一数组
EN

Stack Overflow用户
提问于 2022-04-28 20:08:58
回答 2查看 360关注 0票数 1

我有一个包含数组的对象列表,其中一个值如下所示:

代码语言:javascript
复制
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']}
];

如何获取此值列表并仅将唯一项映射到数组?

到目前为止,我已经做到了:

代码语言:javascript
复制
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);
*/
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0 }

但这只会让我返回这样一个独特的数组:

代码语言:javascript
复制
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']
]

我真正需要的是:

代码语言:javascript
复制
unique_arr = ['value-1', 'value-2', 'value-3', 'value-4', 'value-5']
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-28 20:16:31

您可以映射对象的值,并为构造函数获取一个平面数组。

代码语言:javascript
复制
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);

票数 1
EN

Stack Overflow用户

发布于 2022-04-28 20:30:09

我不知道这是不是你想要的结果

代码语言:javascript
复制
let uniqueArrReduce = [...new Set(obj_arr.reduce((acc, el) => [...acc, ...el.key], []) )]

有地图和平面

代码语言:javascript
复制
let uniqueArrMapFlat = [...new Set(obj_arr.map(el => el.key).flat())]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72049649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档