如何判断JS对象数组属性值与目标对象的键是否完全匹配
匹配逻辑实现方案
核心判断规则
要实现两者完全匹配,需同时满足以下条件:
- 数组
array1中所有row属性的去重后数量,和对象obj1的键总数一致,避免出现一方多值/多键、数组内row重复的问题 - 数组中每个
row属性值,都能在obj1的键中找到对应项
代码实现
const array1= [{row: 101},{row: 102}]; const obj1 ={101: 'someValue', 102 : 'someValue1'} function isMatch(arr, targetObj) { // 提取数组所有row值并去重 const rowValues = [...new Set(arr.map(item => item.row))]; // 提取对象所有键并转为数字,适配row的数字类型 const objKeys = Object.keys(targetObj).map(Number); // 先校验数量是否一致 if (rowValues.length !== objKeys.length) return false; // 校验所有row值都存在于对象键中 return rowValues.every(val => objKeys.includes(val)); } // 测试调用 console.log(isMatch(array1, obj1)) // 输出 true
边界场景验证
- 数组存在重复row值:
array1 = [{row:101},{row:101}],obj1 = {101:'a',102:'b'},返回false - 数组多了额外row值:
array1新增{row:103}元素,返回false - 对象多了额外键:
obj1新增103:'c'键,返回false - 数组存在obj中没有的row值,返回
false
内容的提问来源于stack exchange,提问作者iamro45
相关产品推荐
相关产品推荐

