javascript - 仅从对象 javascript 数组中过滤唯一值

标签 javascript ecmascript-6

我有一组对象,我只想过滤独特的样式并且不重复。

const arrayOfObj = [ {name:'a' , style:'p'} , {name:'b' , style:'q'} , {name:'c' , style:'q'}]

result expected : [ {name:'a' , style:'p'}]

最佳答案

这是 O(n) 时间复杂度的解决方案。您可以迭代所有条目以跟踪条目出现的频率。然后使用 filter()过滤只出现一次的函数。

const arrayOfObj = [
  { name: "a", style: "p" },
  { name: "b", style: "q" },
  { name: "c", style: "q" },
]

const styleCount = {}

arrayOfObj.forEach((obj) => {
  styleCount[obj.style] = (styleCount[obj.style] || 0) + 1
})

const res = arrayOfObj.filter((obj) => styleCount[obj.style] === 1)

console.log(res)

关于javascript - 仅从对象 javascript 数组中过滤唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63408007/

相关文章:

javascript - Babel 重复的函数名

typescript - 将 TypeScript 编译为多个目标

javascript - 如何在右键单击时启用网络浏览器的默认上下文菜单?

javascript - 密码字段默认值

javascript - Reactjs 在 keyup 上获取事件键码

javascript - javascript/jquery 文件是否有多重包含保护?

javascript - jquery.validator 和一页上的两个联系表格将在提交时验证空的一个

javascript - 如何在状态更新后调用异步函数?

javascript - 如何删除由其父级状态实例化的 React 组件类的实例?

javascript - 在原型(prototype)数组上实现快速排序递归函数