迭代二维数组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((的任何组合能够正确工作并保持简洁。我必须采用嵌套循环吗?

您可以使用嵌套映射

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)

简单的嵌套forEachincludes就可以了:

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

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

最新更新