我有一个像这样的对象数组:
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);