Javascript在对象数组中查找数组元素,没有for循环

时间:2018-07-23 07:16:47

标签: javascript arrays

是否可以在arr中查找arrofobjs元素而没有for循环?由于'Buddy'arr都在arrofobjs中,因此我希望found返回true

var arrofobjs = [ { type: 'Dog', name: 'Buddy', color: 'White' },
  { type: 'Cat', name: 'Misty', color: 'Black' },
  { type: 'Dog', name: 'Max', color: 'Black' }, ]
var arr = [ 'Buddy', 'Oscar' ]
var found = Object.values(arrofobjs).some(r=> arr.includes(r)) //returns false, but would return true if arrofobj was an object

3 个答案:

答案 0 :(得分:5)

您必须访问name 属性

var arrofobjs = [ { type: 'Dog', name: 'Buddy', color: 'White' },
  { type: 'Cat', name: 'Misty', color: 'Black' },
  { type: 'Dog', name: 'Max', color: 'Black' }, ]
var arr = [ 'Buddy', 'Oscar' ]
var found = Object.values(arrofobjs).some(r => arr.includes(r.name))
console.log(found);

由于arrofobjs是一个数组,因此可以使用 destructing 直接应用some方法。

var arrofobjs = [ { type: 'Dog', name: 'Buddy', color: 'White' },
{ type: 'Cat', name: 'Misty', color: 'Black' },
{ type: 'Dog', name: 'Max', color: 'Black' }, ]
var arr = [ 'Buddy', 'Oscar' ]
var found = arrofobjs.some(({name}) => arr.includes(name))
console.log(found);

答案 1 :(得分:2)

您快到了。由于arrofobjs是一个数组,因此您可以直接对其进行迭代。

var arrofobjs = [ { type: 'Dog', name: 'Buddy', color: 'White' },{ type: 'Cat', name: 'Misty', color: 'Black' },{ type: 'Dog', name: 'Max', color: 'Black' }];
var arr = [ 'Buddy', 'Oscar' ];
var found = arrofobjs.some(({name})=> arr.includes(name));
console.log(found);

答案 2 :(得分:1)

您还可以使用数组的Array.prototype.find()方法在数组中查找记录。

演示

{{ form_errors(form.xxx) }}
var arrofobjs = [ { type: 'Dog', name: 'Buddy', color: 'White' },
  { type: 'Cat', name: 'Misty', color: 'Black' },
  { type: 'Dog', name: 'Max', color: 'Black' }],
  arr = ['Buddy', 'Oscar'];
  
arr.forEach(v=>console.log(arrofobjs.find(({name})=>name==v)||`${v} Not fond`));