You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测JavaScript二维数组中是否存在book值为"C"的对象?

检查二维数组中是否存在book属性值为"C"的对象

嘿,这个问题不难解决,咱们一步步来~你的数组是嵌套结构:外层是一个数组,里面又包含了子数组,子数组里是带book属性的对象。下面给你几种实用的实现方式:

方法一:嵌套使用Array.some()(最推荐)

这是效率最高的写法,因为some()方法会在找到第一个符合条件的元素后立刻停止遍历,不用浪费资源遍历整个数组:

var test = [[{book:"A"}, {book:"B"}]];
const hasBookC = test.some(innerArray => {
  return innerArray.some(item => item.book === "C");
});

console.log(hasBookC); // 示例里没有"C",所以输出false

简单解释:

  • 外层的test.some()遍历外层数组的每一个子数组
  • 内层的innerArray.some()遍历当前子数组的每一个对象,检查item.book是否等于"C"
  • 只要任意一个子数组里存在符合条件的对象,hasBookC就会变成true,遍历直接终止

方法二:先扁平化数组再检查

如果觉得嵌套的some()有点绕,也可以先把二维数组转成一维数组,再做检查:

var test = [[{book:"A"}, {book:"B"}]];
const flattenedArray = test.flat(); // 转成一维数组:[{book:"A"}, {book:"B"}]
const hasBookC = flattenedArray.some(item => item.book === "C");

console.log(hasBookC); // false

小提示:

如果你的数组是更深层次的嵌套(比如三维、四维),可以给flat()传参数Infinity来彻底扁平化:test.flat(Infinity)

方法三:传统for循环(兼容旧环境)

要是需要兼容不支持ES6语法的旧环境,用传统循环也能实现:

var test = [[{book:"A"}, {book:"B"}]];
let hasBookC = false;

// 遍历外层数组
for (let i = 0; i < test.length; i++) {
  const innerArr = test[i];
  // 遍历子数组里的对象
  for (let j = 0; j < innerArr.length; j++) {
    if (innerArr[j].book === "C") {
      hasBookC = true;
      break; // 找到目标后跳出内层循环
    }
  }
  if (hasBookC) break; // 跳出外层循环,不用继续遍历
}

console.log(hasBookC); // false

不管用哪种方法,都能准确判断目标对象是否存在~

内容的提问来源于stack exchange,提问作者puranjay11m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:40:27