通过反转函数反转二维二进制数组,但在'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 :(得分:2)
您似乎正在使用输入错误的函数。
您应该正确定义数组,因为您在问题标题中使用单词定义了数组。
在屏幕截图中,您会显示一些字符串\r
等的一维数组,而不是二维数组['100101', ...]
!
如果你使用你的函数和正确的二维数组,其中元素确实只有1和0,那么你的函数对我来说工作正常。
例如:
[[1,0,0,1,0,1], ...]
答案 1 :(得分:2)
根据控制台输出中显示的内容,你的数组中没有二进制数,你有0和1的字符串 - 这不是一回事。
正如Pac0所建议的那样,您可以将数组转换为数字0和1的真正2D数组。或者,如果你想以字符串形式反转字符串,并假设字符串代表不超过8位的二进制数,你可以这样做:
arr.map(s => (~parseInt(s, 2) & 0xFF).toString(2))
或者,为了处理这个纯粹的字符串操作,匹配你想要使用的任意数量的位:
arr.map(s => s.replace(/[01]/g, b => b === '0' ? '1' : '0'))