检查数据是否已存在于对象数组中

时间:2017-06-27 16:23:43

标签: javascript arrays object underscore.js

我有以下数据。

var Inputdata = {};
Inputdata.firstName = 'Raul'
Inputdata.lastName = 'Peters'

我想检查firstName和lastName(一起)是否已存在于对象数组中。有人可以让我知道如何实现这一目标。

UserData: [0] 
      firstName: 'Raul'
      lastName: 'Peters'
      Id: '4'
      [1]
      firstName: 'Amil'
      lastName: 'Rikia'
      Id: '5'
      [2]
      firstName: 'Riya'
      lastName: 'Pillai'
      Id: '6'
      [3]
      firstName: 'Natasha'
      lastName: 'Shacke'
      Id: '6'
      [4]
      firstName: 'Eric'
      lastName: 'Coles'
      Id: '6'

如您所见,Raul Peters存在于一个数组中的对象数组中。在这种情况下,我希望输出为真。如果劳尔和彼得斯在不同的对象中,答案应该是假的,因为劳尔和彼得斯不在同一个对象中。任何人都可以让我知道如何实现这个

4 个答案:

答案 0 :(得分:2)

只需进行Array.some检查:

let isPresent = UserData.some(user => user.firstName == 'Raul' && user.lastName == 'Peters')

答案 1 :(得分:0)

使用Array.find

arr.find( function(e){
   if(e.firstname == 'Raul' && e.lastname == 'Peters')
     return e;
});

答案 2 :(得分:0)

const inputData = {};

inputData.firstName = 'Raul';
inputData.lastName = 'Peters';

const userData = [
  {
    firstName: 'Raul',
    lastName: 'Peters',
    Id: '4'
  },
  {
    firstName: 'Amil',
    lastName: 'Rikia',
    Id: '5'
  },
  {
    firstName: 'Riya',
    lastName: 'Pillai',
    Id: '6'
  },
  {
    firstName: 'Natasha',
    lastName: 'Shacke',
    Id: '6'
  },
  {
    firstName: 'Eric',
    lastName: 'Coles',
    Id: '6'
  }
];

此函数接收2个参数:userData对象数组和inputData对象。然后,它使用Array.prototype.some()方法查看userData数组中是否至少有一个条目是与inputData对象匹配的对象。

function alreadyExists(userData, inputData) {
  return userData.some(entry => entry['firstName'] === inputData['firstName'] && entry['lastName'] === inputData['lastName']);
};

console.log(alreadyExists(userData, inputData));

答案 3 :(得分:0)

如果你想使用下划线或lodash,你可以使用函数_.some。使用内部变量可以得到针元素。

var needle = false;
var has = _.some(UserData, function(v) {
    return (v.firstName===Inputdata.firstName && v.lastName===Inputdata.lastName) ? needle = v : false;
});
console.log(has)
console.log(needle)