javascript - 仅获取数组的唯一值

标签 javascript reactjs

我是 javascript 的新手,我尝试使用 distinct 但这不是我想要的

示例数组:

let arr = [ {key:"1",value:"dog"},
            {key:"1",value:"dog"},
            {key:"2",value:"cat"},
            {key:"3",value:"bird"},
            {key:"3",value:"bird"},
          ]

在我尝试的代码中,它只是删除了像

这样的重复项
[ {key:"1",value:"dog"},
  {key:"2",value:"cat"},
  {key:"3",value:"bird"}, ]

我怎样才能得到

[ {key:"2",value:"cat"} ]

我的意思是只有一个没有重复的数组并删除那些完全相同的数组?

最佳答案

您可以将对象映射到对象的字符串化版本,这样您就可以使用 .indexOf.lastIndexOf() 来比较找到的对象是否出现在不同的位置在你的数组中,如果最后一个和第一个索引出现在相同的位置,那么可以说它们是同一个对象(即:不存在重复项)并且可以像这样保存在你的结果数组中:

const arr = [{key:"1",value:"dog"},{key:"1",value:"dog"},{key:"2",value:"cat"},{key:"3",value:"bird"},{key:"3",value:"bird"}];

const searchable = arr.map(JSON.stringify);
const res = arr.filter((obj, i) => {
  const str = JSON.stringify(obj);
  return searchable.indexOf(str) === searchable.lastIndexOf(str);
});
console.log(res);

关于javascript - 仅获取数组的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57742924/

相关文章:

php - 相当于 PHP 字符串附加的 JavaScript

javascript - 为什么我会收到 SyntaxError : Unexpected identifier in forEach with await?

javascript - 如何在单个 JS 变量调用中使用多个字符串

javascript - 在 React Router 中,我无法更改 View ,但只有 url 正在更改

javascript - 无法使用 process.env 访问 react 环境变量

reactjs - 将自定义单选按钮组件放入 Material UI 中的单选组内

javascript - 如何从其他 js 文件执行 selenium Node js 脚本

javascript - 基于输入上下限的随机数

javascript - React js选择所有不在 react 表中的复选框

reactjs - Connect(EquipmentMetadata) 中的 mapStateToProps() 必须返回一个普通对象。相反收到了未定义的