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

JavaScript中如何对比两个数组 校验对象keyName值是否在另一数组内

JavaScript 数组key值校验实现

你可以直接基于数组原生方法实现该校验逻辑,无需引入额外工具库。

核心实现

核心逻辑分两步:遍历arr2中的每一个对象,取出对象的keyName属性值,判断该值是否存在于arr1的元素列表中。
如果你的校验规则是arr2中所有对象的keyName都必须包含在arr1内才算校验通过,可以参考以下代码:

// 定义基础数组
const arr1 = ["empid", "Name"];
const arr2 = [{"keyName": "empid", "keyValue": "2"}];

// 校验函数
const checkKeyValid = (validKeyList, targetList) => {
  return targetList.every(item => validKeyList.includes(item.keyName));
};

// 执行校验,返回布尔值结果
const isPass = checkKeyValid(arr1, arr2);
console.log(isPass); // 示例数据运行后返回true

场景适配

  • 如果校验规则是arr2中只要有任意一个对象的keyName存在于arr1内就算通过,只需要把代码里的every替换为some即可:
const checkKeyHasMatched = (validKeyList, targetList) => {
  return targetList.some(item => validKeyList.includes(item.keyName));
};
  • 如果需要筛选出arr2里所有不符合规则的非法项,可以用filter实现:
// 返回所有keyName不在arr1中的对象集合
const invalidItems = arr2.filter(item => !arr1.includes(item.keyName));
  • 如果需要兼容IE等不支持includes方法的老旧环境,可以把includes判断替换为indexOf写法:
// 老旧环境兼容写法
const checkKeyValid = (validKeyList, targetList) => {
  return targetList.every(item => validKeyList.indexOf(item.keyName) !== -1);
};

提示:如果arr2中可能存在缺失keyName属性的对象,上述逻辑会自动将这类对象判定为非法项。如果需要单独处理这类异常,可以在判断逻辑前增加item.hasOwnProperty('keyName')的前置校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:39:34