猿问

迭代一个二维数组1,改变数组2中所列位置的项目

我有一个二维数组和另一个一维数组。我想遍历二维数组,搜索一维数组中列出的值。


如果找到该值,将该值更改为 0,并将所有其他值更改为 1。


array2d = [

  [1, 2],

  [3, 4],

  [5, 6],

  [7, 8],

];


array1 = [1, 8]


//desired output:

array2d = [

  [0, 1],

  [1, 1],

  [1, 1],

  [1, 0], 

]

到目前为止,我找不到任何 array.filter()、array.map() 或 array.reduce() 的组合可以正常工作并保持简洁。我必须求助于嵌套循环吗?


婷婷同学_
浏览 154回答 2
2回答

偶然的你

您可以使用嵌套地图来做到这一点const array2d = [  [1, 2],  [3, 4],  [5, 6],  [7, 8],]const array1 = [1, 8]const output = array2d.map(sub => sub.map(el => array1.includes(el) ? 0 : 1))console.log(output)

开心每一天1111

简单的嵌套forEachwithincludes就可以了:array2d = [  [1, 2],  [3, 4],  [5, 6],  [7, 8],];array1 = [1, 8];array2d.forEach((arr, i) => {  arr.forEach((el, j) => {    array2d[i][j] = array1.includes(el) ? 0 : 1;  });});//works as a on-liner too://array2d.forEach((arr, i) => arr.forEach((el, j) => array2d[i][j] = array1.includes(el) ? 0 : 1));console.log(array2d);此解决方案的一个优点是,如果您想保留对数组变量的引用(不创建新数组)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答