JavaScript中校验两个数组指定索引位置值是否相等的方法
JS数组指定索引值匹配校验方法
原生JavaScript没有提供直接实现该需求的内置方法,你可以基于Array.every()方法自行封装工具函数实现:
/** * 校验两个数组指定索引位置的值是否完全相等 * @param {Array} arr1 待对比数组1 * @param {Array} arr2 待对比数组2 * @param {Array} indexes 要校验的索引集合 * @returns {Boolean} 所有指定位置值都相等返回true,否则返回false */ function checkIndexesMatch(arr1, arr2, indexes) { // 遍历所有指定索引,判断对应位置值是否全部相等 return indexes.every(index => { // 可选:增加索引存在性校验,避免越界时undefined相等的误判 return arr1.hasOwnProperty(index) && arr2.hasOwnProperty(index) && arr1[index] === arr2[index] }) }
测试示例
示例1:校验最后3个索引(6、7、8)
const arr1 = [1,2,1,0,0,0,2,2,2] const arr2 = [0,0,0,0,0,0,2,2,2] console.log(checkIndexesMatch(arr1, arr2, [6,7,8])) // 输出:true
示例2:校验索引0、4、8
const arr1 = [1,2,3,0,1,2,4,2,1] const arr2 = [1,0,0,0,1,0,0,0,1] console.log(checkIndexesMatch(arr1, arr2, [0,4,8])) // 输出:true
注意事项
- 上述代码默认使用
===做严格相等判断,如果你需要对比引用类型(对象、数组等)的值,需要自行替换相等判断逻辑 - 如果你能保证传入的索引一定在两个数组的有效长度范围内,可以省略
hasOwnProperty的判断,减少执行开销
内容的提问来源于stack exchange,提问作者George Barda
相关产品推荐
相关产品推荐

