从javascript中的对象数组中删除重复值

我有一个像这样的对象数组:

arr = [
    {label: Alex, value: Ninja},
    {label: Bill, value: Op},
    {label: Cill, value: iopop}
]

这个数组是在渲染我的react组件时组成的. i用户Array.prototype.unshift用于在我的数组顶部添加所需的元素.
所以我写了arr.unshift({label:All,value:All}).当我的组件首次渲染时,我的数组成功创建了我想要的.但是当我重新渲染它时,它会向我显示值为{label:All,value:All}的数组.更具体地说,它显示如下:

arr = [
    {label: All, value: All},
    {label: All, value: All},
    {label: Alex, value: Ninja},
    {label: Bill, value: Op},
    {label: Cill, value: iopop}
]

我怎样才能解决这个问题?我在这里尝试了特定主题中描述的方法,但它没有用

解决方法:

您可以使用array#reduce和array#some.

const arr = [
    {label: 'All', value: 'All'},
    {label: 'All', value: 'All'},
    {label: 'Alex', value: 'Ninja'},
    {label: 'Bill', value: 'Op'},
    {label: 'Cill', value: 'iopop'}
]

var result = arr.reduce((unique, o) => {
    if(!unique.some(obj => obj.label === o.label && obj.value === o.value)) {
      unique.push(o);
    }
    return unique;
},[]);
console.log(result);
上一篇:在java jar中重复类有什么含义?


下一篇:PHP在DB中插入重复项