我需要检查特定对象的对象是否具有给定值。
在此示例中,我要检查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'
}
]
答案 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。