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

JavaScript判断两个对象所有对应键值数组长度是否相等

问题解决思路

你的代码存在两个核心问题,直接导致报错和不符合预期的结果:

1. Object.entries 参数解构错误

Object.entries() 返回的是形如 [key, value] 的二维数组,你写的 (k, v) 里,第一个参数 k 是整个 [key, value] 数组,第二个参数 v 是当前项的索引,这就导致用 mapTwo[k] 时,k 是数组而非字符串key,自然会报错。正确写法是用数组解构获取key和对应数组:([key, arr])。

2. 误用 map 方法

map() 会返回一个新数组,而你需要的是所有对应数组长度都相等的单个布尔值,应该用 every() 方法——它会遍历数组,只有当所有回调返回true时,才会返回true,否则返回false。

修正后的基础代码

const mapOne = {idOne: ['a', 'b'], idTwo: ['c', 'd', 'e']};
const mapTwo = {idOne: [1, 2], idTwo: [3, 4, 5]};

// 假设两个对象的key完全一致时的写法
const result = Object.entries(mapOne).every(([key, arr]) => {
  return arr.length === mapTwo[key].length;
});

console.log(result); // 输出 true

进阶:严格校验key完全一致

如果需要确保两个对象的key无遗漏、无额外项,可以先校验key的匹配度:

const keysOne = Object.keys(mapOne);
const keysTwo = Object.keys(mapTwo);

const result = keysOne.length === keysTwo.length 
  && keysOne.every(key => keysTwo.includes(key))
  && Object.entries(mapOne).every(([key, arr]) => arr.length === mapTwo[key].length);

console.log(result);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:42:38