有没有一种简单的方法可以在数组中交换0和1

时间:2020-06-15 19:40:04

标签: javascript arrays function indexing

我有一项任务需要交换数组中的索引值。

这是我编写的代码。我对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]]

6 个答案:

答案 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);