你这个代码不是 JS 啊,看起来倒有些像 Golang。。。
你没有说明你这个比较的目的,因此如果没有别的要求,那么下面是 JS 的代码:
/*** 比较两个数组的重复部分
* @param {Array.<number>} arr1 数组1
* @param {Array.<number>} arr2 数组2
* @return {Array.<number>} 返回一个数组,元素 2*n 是匹配开始的位置,元素 2*n+2是匹配终止的地方
*/
function hutiaCompare(arr1, arr2){
/** @type {number} */
var len = Math.min(arr1.length, arr2.length)
/** @type {Array.<number>} */
var re = []
for (var i=0 i<len i++){
// 为了便于你理解,我把下面两个条件分开写了
// 按我习惯一般会写在一起
// 条件1:如果匹配,且没有记录过匹配起始位置
if (arr1[i] == arr2[i] && re.length%2===0) {
re.push(i)
// 条件2:如果不匹配,且已经记录过匹配起始位置了
} else if (arr1[i] != arr2[i] && re.length%2===1){
re.push(i)
}
}
if (re.length %2 === 1) re.push(i)
return re
}
以上,请采纳,请给分。
有一说一这种方式是百度到的最常见的,而且的最方便的,但是依旧会存留问题
1.数组顺序不一致,(可以使用 .srot() 做一下排序)
2.由于转义成了字符串,会导致原本是数字的数据,会变成字符串类型,可能会影响对比的准确性