在包含对象的数组中,检查任何这些对象中是否存在键

nsh*_*oes 5 javascript arrays object ecmascript-6

我有一个对象数组,需要查看其中任何一个中是否存在键。这是我现在正在做的事情:

const arr = [{ id: 1, foo: 'bar' }, { id: 2 }]
arr.map(o => o.foo && true).includes(true)
// true
Run Code Online (Sandbox Code Playgroud)

有没有更好/更被接受的方法来做到这一点?

Car*_*nso 5

您可以使用数组#some

var arr = [{ id: 1, foo: 'bar' }, { id: 2 }]
result = arr.some(o => 'foo' in o)
console.log(result)
Run Code Online (Sandbox Code Playgroud)

every()和之间的区别some()

  • 每一个:

它将检查所有对象上是否存在给定的键,如果不是所有对象都具有该键,则返回 false。

  • 一些:

它将检查是否至少有一个对象具有该键,如果存在则已返回 true。


Sco*_*cus 3

我会使用该Array.prototype.some()功能:

const arr = [
  { id: 1, foo: 'bar' },
  { id: 2 }
];

var result = arr.some(e => e.hasOwnProperty('foo'));
console.log("The array contains an object with a 'foo' property: " + result);

var result = arr.some(e => e.hasOwnProperty('baz'));
console.log("The array contains an object with a 'baz' property: " + result);
Run Code Online (Sandbox Code Playgroud)