通过invert函数反转二维二进制数组,但该函数在'if(){...}'之后不起作用
function invert(arr){
for(let i=0;i<arr.length;i++)
{
for(let j=0;j<arr[i].length;j++)
{
// or arr[i][j]=~arr[i][j] ?;
if(arr[i][j]==0) //start inverting the arr
{
//all above are right,but the following operation seems not working
arr[i][j]=1;
}
else{
arr[i][j]=0;
}
}
}
console.log(arr); //print the array
return arr;
}
从控制台输出中显示的内容来看,数组中没有二进制数,字符串由0和1组成-这不是同一回事。
您可以按照Pac0的建议将数组转换为数字2和0的真实2D数组。或者,如果您想将字符串转换为字符串形式,并假设字符串表示的二进制数不超过8位,则可以执行以下操作:
arr.map(s => (~parseInt(s, 2) & 0xFF).toString(2))
或者,将其纯粹作为字符串处理来处理,匹配要使用的任意位数:
arr.map(s => s.replace(/[01]/g, b => b === '0' ? '1' : '0'))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句