插入数组前怎么通过id判断该项是否存在,有就不插入,没有就插入
arr = [
{
id:'1'
},
{
id:'2'
}
]
obj = {
id:'2'
}
arr.push(obj)
插入数组前怎么通过id判断该项是否存在,有就不插入,没有就插入
arr = [
{
id:'1'
},
{
id:'2'
}
]
obj = {
id:'2'
}
arr.push(obj)
方法应该有很多。
// 方法一:
if (!arr.find(el => el.id === obj.id)) {
arr.push(obj)
}
console.log(arr)
// 方法二:
if (!arr.some(el => el.id === obj.id)) {
arr.push(obj)
}
console.log(arr)
// 方法三:
let exist: number = 0
arr.forEach((item: any) => {
if (item.id === obj.id) {
exist+=1
}
})
if (!exist) {
arr.push(obj)
}
console.log(arr)
// 方法四:
const values: any[] = []
arr.forEach((item: any) => {
values.push(item.id)
})
if (values.indexOf(obj.id)=== -1) {
arr.push(obj)
}
console.log(arr)
如果只是push一次可以直接考虑find,
如果要可能会push多个数据可以考虑先map一下, 取出所有id数组, 再通过includes去判断插入
const exists = arr.map(v => v.id);
if (exists.includes(obj.id)) {
arr.push(obj);
exists.push(obj.id)
}
13 回答12.8k 阅读
8 回答2.6k 阅读
2 回答5.1k 阅读✓ 已解决
7 回答2k 阅读
5 回答910 阅读
3 回答2.2k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
通过数组的
find
方法