检查是否有任何对象具有特定字段的值

时间:2018-08-13 18:55:48

标签: javascript arrays ecmascript-6

我需要检查特定对象的对象是否具有给定值。

在此示例中,我要检查value的所有find me-是的

const example = [
  {
    text: 'something',
    value: 'some value'
  },
  {
    text: 'anything',
    value: 'find me'
  }
]

在此示例中,相同的搜索(在value的所有find me字段中进行检查)应该为false:

const example = [
  {
    text: 'something',
    value: 'some value'
  },
  {
    text: 'anything',
    value: 'another value'
  }
]

4 个答案:

答案 0 :(得分:3)

使用Array.some方法。

example.some(obj => obj.value === 'find me');

这是示例代码:

var example1 = [{
    text: 'something',
    value: 'some value'
}, {
    text: 'anything',
    value: 'another value'
}]

var example2 = [{
    text: 'something',
    value: 'some value'
}, {
    text: 'anything',
    value: 'find me'
}]

console.log(example1.some(obj=>obj.value === 'find me'));
// false
console.log(example2.some(obj=>obj.value === 'find me'));
// true

答案 1 :(得分:1)

使用Array.some()

const hasField = example.some(obj => obj.value === 'find me');

答案 2 :(得分:0)

您可以使用.some()和对象分解来创建通用搜索功能:

const example1 = [{text: 'something',value: 'some value'},{text: 'anything',value: 'find me'}];
const example2 = [{text: 'something',value: 'some value'},{text: 'anything',value: 'another value'}];

let locator = (arr, str) => arr.some(({value}) => value == str);

console.log(locator(example1, 'find me'));
console.log(locator(example2, 'find me'));

答案 3 :(得分:0)

这是使用Array.filter()的简单方法:

function getObjectsWithMatchedValue(array, searchValue) {
  // Find Object(s) in array where Object.value === searchValue
  return array.filter((item) => {
    return item.value === searchValue;
  });
}

const example1 = [
  {
    text: 'something',
    value: 'some value'
  },
  {
    text: 'anything',
    value: 'find me'
  }
];

const example2 = [
  {
    text: 'something',
    value: 'some value'
  },
  {
    text: 'anything',
    value: 'another value'
  }
];

getObjectsWithMatchedValue(example1, 'find me');
/*
  expected return:
  [
    {
      text: 'anything',
      value: 'find me'
    }
  ]
*/


getObjectsWithMatchedValue(example2, 'find me');
/*
  expected return:
  []
*/

注意: 这将返回数组中所有匹配的对象,因此您可以将其包装起来以检查长度,如果为0,则返回false。