我是一名初级开发人员,试图解决一种情况,如果我们尝试将现有对象添加到数组中,我应该会得到一个错误。
输入:
{
id: "0",
name: "sdsd"
}
现有数组:
[{
id: "0",
name: "sdsd"
},
{
id: "1",
name: "sds"
},
{
id: "2",
name: "sdf"
}]
我希望该功能类似于
findDuplicate(Array,Object)=>如果存在则返回true,否则返回false。
答案 0 :(得分:1)
使用some方法,因为它将返回true
/ false
。如果返回了某些与true
相匹配的项,否则如果没有匹配项,则将返回false
(您的回调必须返回一个true / falsey值)。
let items = [
{ id: "0", name: "sdsd" },
{ id: "1", name: "sds" },
{ id: "2", name: "sdf" }
]
// Test "name"
console.log(items.some(i => i.name == 'sdsd'))
console.log(items.some(i => i.name == 'dog'))
// Test "id"
console.log(items.some(i => i.id == '0'))
console.log(items.some(i => i.id == '100'))
// Test both "name" and "id"
console.log(items.some(i => i.name == 'sdsd' && i.id == '0'))
console.log(items.some(i => i.name == 'sdsd' && i.id == '100'))
答案 1 :(得分:0)
您可以如下使用数组过滤器和数组:
var exist = [{
id: "0",
name: "sdsd"
},
{
id: "1",
name: "sds"
},
{
id: "2",
name: "sdf"
}];
function findDuplicate(array, object){
var result = array.filter(current=>{
return Object.keys(current).every(key =>{
if (object[key] === current[key]){
return key;
}
});
});
//console.log(result);
if (result.length == 0 )
return false;
return true;
}
console.log (findDuplicate(exist,{id:"0",name:"sdsdf"}));
console.log (findDuplicate(exist,{id:"0",name:"sdsd"}));