我有一个二维数组和另一个一维数组。我想遍历二维数组,搜索一维数组中列出的值。如果找到该值,将该值更改为 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)
开心每一天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);
此解决方案的一个优点是,如果您想保留对数组变量的引用(不创建新数组)
添加回答
举报
0/150
提交
取消