javascript - ES6方式 - 按键从嵌套数组中获取唯一值

标签 javascript sorting filtering

试图提高我的 JS 排骨。
有没有一种更简洁的方法可以通过键从嵌套对象中从下面的数组中检索属性值,删除重复项并按字母顺序对其进行排序?
这是我所拥有的:

getObjectValues(array, key){

      var unique = [];
      
      array.forEach(function(item){
        item[key].forEach(function(value){
          if (unique.indexOf(value) < 0) {
            unique.push(value)
          }
        })
      });

      return unique.sort();
    },
对象数组示例:
[
  { name: 'hello', value: ['a','b','c']},
  { name: 'hello', value: ['a','b','c']},
  { name: 'hello', value: ['a','b','c']}
]

预期输出应该是一个数组:
var array = ['a','b','c']

最佳答案

您可以只使用一个 Set,并将所有项目添加到其中:

let arr = [
  { name: 'hello', value: ['a','b','c']},
  { name: 'hello', value: ['a','b','c']},
  { name: 'hello', value: ['a','b','c']}
]

console.log(
    Array.from(
        new Set(
            arr.reduce(
                (carry, current) => [...carry, ...current.value],
                 []
            )
        )
    ).sort()
)

关于javascript - ES6方式 - 按键从嵌套数组中获取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62942904/

相关文章:

javascript - 了解 rxjs 中的 SwitchMap

c++ - 冒泡排序链表 C++

javascript - 使用 JavaScript 在客户端过滤项目的最佳实践,隐藏或从 DOM 中删除?

Angular:具有使用 mat-select-filter 并向过滤器字段添加图标的搜索功能的多个 mat-select 下拉列表

language-agnostic - “Stop words”列出英语吗?

javascript setInterval - 倒计时滞后

javascript - 在不使用 ID 或类的情况下显示隐藏广告,因为内容会经常更改

c# - 是否可以在客户端使用 silverlight c# 或 javascript 运行 exe 文件?

python - 解释基本的 lambda 函数和排序

algorithm - 为什么在分布计数排序算法中从右到左处理输入数组更好?