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

如何判断嵌套对象数组的changeFields中是否存在printLogs字段?

判断数组中是否存在含指定键的嵌套元素

你需要判断printObj数组里是否有任意对象的changeFields数组包含带printLogs键的元素,返回布尔值。先说说你之前代码的问题:

  1. filter是用来筛选数组元素并返回新数组的,不是用来判断“是否存在”的,应该用some方法——它只要找到一个符合条件的元素就会终止遍历并返回true,效率更高。
  2. 你的回调函数里没有返回值,导致filter无法正确筛选;而且没处理changeFields不存在的情况(比如示例里最后一个空对象),直接访问会报错。

正确代码实现

const hasPrintLogs = printObj.some(item => {
  // 先跳过没有changeFields或不是数组的元素
  if (!item.changeFields || !Array.isArray(item.changeFields)) {
    return false;
  }
  // 检查当前item的changeFields中是否有元素自身拥有printLogs键
  return item.changeFields.some(field => field.hasOwnProperty('printLogs'));
});

代码说明

  • 外层some遍历printObj的每个对象,只要有一个对象符合条件就停止遍历并返回true。
  • 内层some遍历当前对象的changeFields数组,用hasOwnProperty检查元素自身是否包含printLogs键(避免原型链上的属性干扰)。
  • 加入了边界判断,防止访问不存在的changeFields导致运行报错。

测试你提供的示例数据,这段代码会返回true,因为第二个对象的changeFields里存在带printLogs的元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:06:20