我有一项任务需要交换数组中的索引值。
这是我编写的代码。我对js有点陌生,所以可能有点不对劲。
function swap(arr){
for(let i = 0; i = arr.length; i++){
if (arr[i] == 0){
return arr[i] + 1
}
if (arr[i]== 1){
return arr[i] - 1
}
}else{
return "only accepts 0 and 1"
}
}
console.log(swap[[1,0,0],[0,1,0],[1,1,0]])
console.log
应该返回[[0,1,1],[1,0,1],[0,0,1]]
答案 0 :(得分:0)
使用ES6,您可以执行以下操作:
const swapArray = [0,1,1] .map(index =>!index);
结果:swapArray = [true,false,false]
答案 1 :(得分:0)
这是蛮力,你可以用地图来做。
function swap(arr){
let returnArr = []
for(let i = 0; i < arr.length; i++){
let returnArr1 = []
for (let j = 0; j < arr.length; j++){
console.log(arr[i][j])
if(arr[i][j] === 0) returnArr1.push(1)
else if(arr[i][j] === 1) returnArr1.push(0)
}
returnArr.push(returnArr1)
}
return returnArr
}
swap([[1,0,0],[0,1,0],[1,1,0]])
[ [ 0, 1, 1 ], [ 1, 0, 1 ], [ 0, 0, 1 ] ]
答案 2 :(得分:0)
您可能想要做这样的事情-
function swap(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j++) {
// Here we are just comparing arr[i][j]
// - if it is 1, make it 0
// - if it is 0, make it 1
arr[i][j] = (arr[i][j] ? 0 : 1);
}
}
// return the modified array
return arr;
}
let arr = [
[1, 0, 0],
[0, 1, 0],
[1, 1, 0]
]
console.log(swap(arr))
您还可以使用以下简写语法-
let arr = [
[1, 0, 0],
[0, 1, 0],
[1, 1, 0]
];
// swapping 0s to 1 and 1s to 0
// The map will take each inner array and each element of that array and modify according to given condition
const swapped_arr = arr.map(inner_array => inner_array.map(el => el ? 0 : 1));
console.log(swapped_arr);
我在一些地方添加了注释,以使您理解
希望这会有所帮助!
答案 3 :(得分:0)
我已经在下面测试了此代码,它可以工作。
function swap(arr){
arr.forEach((item,index)=>{arr[index]=+!item});
return arr;
}
console.log(swap([1,0,0]));
console.log(swap([1,1,1]));
console.log(swap([1,0,1]));
答案 4 :(得分:0)
尝试一下:
function swap(arr){
return arr.map(x => x.map(j => Number(!j)));
}
console.log(swap([[1,0,0],[0,1,0],[1,1,0]]));
答案 5 :(得分:-1)
使用array.map()可以解决此问题。 这可能是解决方案:
const x = [[1,0,0],[0,1,0],[1,1,0]];
const result = x.map(el => el.map(item => item === 1 ? 0: 1))
console.log(result);