如何在JavaScript对象数组中判断是否存在指定key-value键值对
实现方法
你可以直接使用JS内置的Array.prototype.some()方法完成需求,该方法会迭代数组元素,只要找到第一个符合条件的元素就会立刻停止遍历,返回布尔值true,如果遍历完所有元素都没有匹配项则返回false,不需要你手动实现完整遍历逻辑。
示例代码如下:
var myArray = [{ value1: "a", value2: "b" }, { value1: "c", value2: "d" }, { value1: "e", value2: "a" }]; var result = myArray.some(function(item) { return item.value1 === "a"; }); // 箭头函数简写版 // var result = myArray.some(item => item.value1 === "a"); console.log(result); // 输出 true
关于遍历的问题
底层逻辑上肯定需要遍历数组元素做判断,但是:
- 不需要你手动编写完整的循环逻辑,直接调用内置方法即可
- 内置
some()方法是短路执行的,只要匹配到第一个符合条件的元素就会终止迭代,不会遍历整个数组,只有当符合条件的元素不存在,或者在数组最后一位时才会遍历所有元素
如果是需要兼容不支持ES5的极端老旧环境,也可以手动实现短路循环,代码如下:
function checkExist(arr, targetKey, targetValue) { for(var i = 0; i < arr.length; i++) { if(arr[i][targetKey] === targetValue) { return true; } } return false; } var result = checkExist(myArray, "value1", "a");
内容的提问来源于stack exchange,提问作者CodingBoss
相关产品推荐
相关产品推荐

