给定对象作为输入,无法找到对象数组中是否存在对象

时间:2018-09-23 22:13:30

标签: javascript arrays object ecmascript-6

我是一名初级开发人员,试图解决一种情况,如果我们尝试将现有对象添加到数组中,我应该会得到一个错误。

输入:

 {
  id: "0", 
  name: "sdsd"
}

现有数组:

[{
  id: "0", 
  name: "sdsd"
 },

{
 id: "1", 
 name: "sds"
}, 
{
 id: "2",
 name: "sdf"
}]

我希望该功能类似于

findDuplicate(Array,Object)=>如果存在则返回true,否则返回false。

2 个答案:

答案 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"}));