我有以下代码应该在这样的数组中找到两个字符串之间的交点,["1, 3, 4, 7, 13", "1, 2, 4, 13, 15"]
它应该给出结果:1,4,13
function FindIntersection(strArr) {
const firstArr = strArr[0].split(", ");
const secondArr = strArr[1].split(", ");
let newArr = [];
let i = 0;
let j = 0;
while(i < firstArr.length && j < secondArr.length) {
let a = firstArr[i] | 0;
let b = secondArr[j] | 0;
if(a === b) {
newArr.push(a);
i++;
j++;
} else if(a > b) {
j++;
} else if (b > a) {
i++;
}
}
strArr = newArr.join(",");
return strArr;
}
当我不使用按位运算符时| 0
,为什么不能正确访问数组中的最后一个元素?按位运算符如何解决此问题?
您不需要显式的按位运算符,只需将其转换为整数即可。如评论中所述,这只是触发将字符串转换为整数的一种方法。
typeof('str' | 0) === 'number'
但这很糟糕,因为'str'
可能存在错误。我会更明确地使用:
let a = parseInt(firstArr[i], 10);
这将返回NaN
如果它不是一个有效的整数,NaN === NaN
是false
,这样你就不会不小心将它添加到newArr
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句