为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

婷婷同学_ 2022-12-09 17:12:43
我有一个二维数组和另一个一维数组。我想遍历二维数组,搜索一维数组中列出的值。如果找到该值,将该值更改为 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() 的组合可以正常工作并保持简洁。我必须求助于嵌套循环吗?
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

您可以使用嵌套地图来做到这一点


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)


查看完整回答
反对 回复 2022-12-09
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

简单的嵌套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);

此解决方案的一个优点是,如果您想保留对数组变量的引用(不创建新数组)



查看完整回答
反对 回复 2022-12-09
  • 2 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信