我是 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/