检查数组是否包含对象中的值并返回它们?

3

I have an Array, say something like that:

var array = [{something:"a"},{something:"b"},{something:"c"}]

我现在想获取包含"b"的Object。我该如何做?

在此之前,我尝试使用array.filterarray.find结合includes方法查找,但我无法找到在数组中查找对象内部字符串而不仅仅是在数组中查找字符串的方法。


array.find(x => x.something.includes("b")) 用于部分匹配,或者使用 array.find(x => x.something === "b") 进行精确匹配。 - VLAZ
1
filterfind都将元素传递到回调函数中。数组元素是您的对象,所以现在您需要做的就是访问该对象的特定属性。就像https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter中的示例使用`length`一样,您想要使用 b - CBroe
3个回答

2
这将按你的要求返回对象(如果存在)。
let resultWithSomethingB = array.filter(element => element.something === 'b')[0];

如果数组为空怎么办? - nafas
1
@nafas 的结果将会是 undefined - VLAZ
@VLAZ 我认为这会抛出异常而不是未定义...我可能错了!!! - nafas
1
@nafas 过滤一个空数组会返回一个空数组。获取一个空数组的第一个元素会返回 undefined - VLAZ

1
使用数组过滤函数来实现这个:

var array = [{something:"a"},{something:"b"},{something:"c"}];

// Filter array based on .something
console.log(array.filter(a => { return a.something === "b" }))


1
在这种情况下,您可以使用 array.filter

let newObject = null;

const newArray = array.filter(function(item) {
    // Return an item if the something property is a "b"
    return item.something === "b";
});

if (newArray.length > 0) {
    // Returns the first element
    newObject = newArray[0];
}

// Use the newObject

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接