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

如何在给定JavaScript对象中打印包含指定数组的键名?

解决方法:找出包含指定子数组的对象键名

没问题,这事儿其实挺简单的,核心就是要准确判断每个键对应的数组里是否包含你指定的子数组。直接上可运行的代码和详细解释:

实现代码

const data = { 
  sand: [['sun', 'moon', 'cool'], ['man', 'store', 'rose', 'big', 'you', 'sharp', 'low', 'high'], ['hot', 'cool', 'lip'], ['store', 'man', 'lip']], 
  king: [['store', 'man', 'lip'], ['store', 'man', 'lip'], ['store', 'man', 'lip']], 
  house: [['lip', 'store', 'hot', 'bed', 'you', 'low', 'run', 'high'], ['cool', 'sun', 'hot', 'big', 'sharp', 'low', 'run', 'high'], ['high', 'cool', 'moon', 'lip', 'man'], ['man', 'store', 'rose', 'big', 'you', 'sharp', 'low', 'high']], 
  bow: [['lip', 'store', 'hot', 'bed', 'you', 'low', 'run', 'high'], ['bed', 'moon', 'lip'], ['low', 'cool', 'lip', 'man']], 
  queen: [['cool', 'awe'], ['low', 'dad'], ['usa', 'cool', 'ita'], ['bed', 'glass', 'store', 'sal']], 
};

// 定义我们要找的目标子数组
const targetSubArr = ['store', 'man', 'lip'];
const matchingKeys = [];

// 遍历对象的所有键名
for (const key of Object.keys(data)) {
  // 检查当前键对应的数组中是否存在匹配的子数组
  const hasMatchingSubArr = data[key].some(subArr => {
    // 注意:不能直接用 === 比较数组,得转成字符串或者逐元素对比
    return JSON.stringify(subArr) === JSON.stringify(targetSubArr);
  });
  
  if (hasMatchingSubArr) {
    matchingKeys.push(key);
  }
}

// 输出预期格式的结果
console.log(matchingKeys.join(', ')); // 输出: sand, king

关键细节解释

  • 数组不能直接用===比较:因为数组是引用类型,即使元素和顺序都一样,两个数组的引用也不同,所以得用JSON.stringify把数组转成字符串后对比,确保元素顺序和内容完全一致。
  • Array.some()方法:用来快速判断数组中是否至少有一个元素满足条件,只要找到一个匹配的子数组就会停止遍历,效率更高。
  • 结果格式化:最后用Array.join(', ')把收集到的键名转成你需要的逗号分隔字符串。

更可靠的数组对比方案(可选)

如果担心JSON.stringify遇到特殊字符(比如包含undefined、函数或者循环引用)的边缘情况,可以自己写一个逐元素对比的函数:

function isArraysEqual(arr1, arr2) {
  if (arr1.length !== arr2.length) return false;
  for (let i = 0; i < arr1.length; i++) {
    if (arr1[i] !== arr2[i]) return false;
  }
  return true;
}

// 把上面的判断替换成这个函数即可
const hasMatchingSubArr = data[key].some(subArr => isArraysEqual(subArr, targetSubArr));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:01:37