📌  相关文章
📜  如何检查对象数组中是否存在元素js - Javascript(1)

📅  最后修改于: 2023-12-03 15:38:50.338000             🧑  作者: Mango

检查对象数组中是否存在元素

当我们需要在一个对象数组中查找是否存在某个元素时,可以使用一些内置方法或自定义函数来实现。

1. 使用内置方法Array.includes()

Array.includes()方法将返回一个布尔值,用于表示数组中是否存在指定元素。我们可以将数组中的每个对象转换成字符串,再检查是否存在目标字符串,以判断数组是否包含元素,示例如下:

const objArr = [{name: 'apple', price: 2}, {name: 'banana', price: 3}, {name: 'orange', price: 4}];
const targetObj = {name: 'banana', price: 3};

const isExist = objArr.map(obj => JSON.stringify(obj)).includes(JSON.stringify(targetObj));

console.log(isExist); // true

注意,以上例子中使用了JSON.stringify()方法将对象转换成字符串,由于Array.includes()方法使用的是严格相等比较,因此我们需要确保字符串的格式匹配,以避免产生误判。

2. 使用自定义函数Array.findIndex()

Array.findIndex()方法将返回数组中第一个符合测试规则的元素的索引,当没有符合条件的元素时返回-1。我们可以通过比较每个对象的某个属性值,来判断是否存在指定元素,示例如下:

const objArr = [{name: 'apple', price: 2}, {name: 'banana', price: 3}, {name: 'orange', price: 4}];
const targetName = 'banana';

const targetIndex = objArr.findIndex(obj => obj.name === targetName);

const isExist = targetIndex !== -1;

console.log(isExist); // true

以上例子中使用了箭头函数和解构赋值来简化代码,注意Array.findIndex()方法的回调函数应该返回一个布尔值,以表示当前元素是否符合测试规则。

结论

两种方法各有优劣,使用Array.includes()方法可以简化代码,但需要对数组中的每个对象进行字符串转换;而使用Array.findIndex()方法则较为灵活,可以依据特定的测试规则进行判断。根据具体情况选择合适的方法进行判断即可。