查找和更改Javascript数组的数组项



我试图找到并更改数组数组内部的项目。

我的数组是这样的:

const matriz = [
[
{
codigo: 1,
imagem: 1,
clicou: false,
},
{
codigo: 2,
imagem: 2,
clicou: false,
},
{
codigo: 3,
imagem: 3,
clicou: false,
},
{
codigo: 4,
imagem: 4,
clicou: false,
},
{
codigo: 5,
imagem: 5,
clicou: false,
},
{
codigo: 6,
imagem: 1,
clicou: false,
},
{
codigo: 7,
imagem: 2,
clicou: false,
},
{
codigo: 8,
imagem: 3,
clicou: false,
},
{
codigo: 9,
imagem: 4,
clicou: false,
},
{
codigo: 10,
imagem: 5,
clicou: false,
},
],
[
{
codigo: 11,
imagem: 1,
clicou: false,
},
{
codigo: 12,
imagem: 2,
clicou: false,
},
{
codigo: 13,
imagem: 3,
clicou: false,
},
{
codigo: 14,
imagem: 4,
clicou: false,
},
{
codigo: 15,
imagem: 5,
clicou: false,
},
{
codigo: 16,
imagem: 1,
clicou: false,
},
{
codigo: 17,
imagem: 2,
clicou: false,
},
{
codigo: 18,
imagem: 3,
clicou: false,
},
{
codigo: 19,
imagem: 4,
clicou: false,
},
{
codigo: 20,
imagem: 5,
clicou: false,
},
],
[
{
codigo: 21,
imagem: 1,
clicou: false,
},
{
codigo: 22,
imagem: 2,
clicou: false,
},
{
codigo: 23,
imagem: 3,
clicou: false,
},
{
codigo: 24,
imagem: 4,
clicou: false,
},
{
codigo: 25,
imagem: 5,
clicou: false,
},
{
codigo: 26,
imagem: 1,
clicou: false,
},
{
codigo: 27,
imagem: 2,
clicou: false,
},
{
codigo: 28,
imagem: 3,
clicou: false,
},
{
codigo: 29,
imagem: 4,
clicou: false,
},
{
codigo: 30,
imagem: 5,
clicou: false,
},
],
[
{
codigo: 31,
imagem: 1,
clicou: false,
},
{
codigo: 32,
imagem: 2,
clicou: false,
},
{
codigo: 33,
imagem: 3,
clicou: false,
},
{
codigo: 34,
imagem: 4,
clicou: false,
},
{
codigo: 35,
imagem: 5,
clicou: false,
},
{
codigo: 36,
imagem: 1,
clicou: false,
},
{
codigo: 37,
imagem: 2,
clicou: false,
},
{
codigo: 38,
imagem: 3,
clicou: false,
},
{
codigo: 39,
imagem: 4,
clicou: false,
},
{
codigo: 40,
imagem: 5,
clicou: false,
},
],
[
{
codigo: 41,
imagem: 1,
clicou: false,
},
{
codigo: 42,
imagem: 2,
clicou: false,
},
{
codigo: 43,
imagem: 3,
clicou: false,
},
{
codigo: 44,
imagem: 4,
clicou: false,
},
{
codigo: 45,
imagem: 5,
clicou: false,
},
{
codigo: 46,
imagem: 1,
clicou: false,
},
{
codigo: 47,
imagem: 2,
clicou: false,
},
{
codigo: 48,
imagem: 3,
clicou: false,
},
{
codigo: 49,
imagem: 4,
clicou: false,
},
{
codigo: 50,
imagem: 5,
clicou: false,
},
],
[
{
codigo: 51,
imagem: 1,
clicou: false,
},
{
codigo: 52,
imagem: 2,
clicou: false,
},
{
codigo: 53,
imagem: 3,
clicou: false,
},
{
codigo: 54,
imagem: 4,
clicou: false,
},
{
codigo: 55,
imagem: 5,
clicou: false,
},
{
codigo: 56,
imagem: 1,
clicou: false,
},
{
codigo: 57,
imagem: 2,
clicou: false,
},
{
codigo: 58,
imagem: 3,
clicou: false,
},
{
codigo: 59,
imagem: 4,
clicou: false,
},
{
codigo: 60,
imagem: 5,
clicou: false,
},
],
[
{
codigo: 61,
imagem: 1,
clicou: false,
},
{
codigo: 62,
imagem: 2,
clicou: false,
},
{
codigo: 63,
imagem: 3,
clicou: false,
},
{
codigo: 64,
imagem: 4,
clicou: false,
},
{
codigo: 65,
imagem: 5,
clicou: false,
},
{
codigo: 66,
imagem: 1,
clicou: false,
},
{
codigo: 67,
imagem: 2,
clicou: false,
},
{
codigo: 68,
imagem: 3,
clicou: false,
},
{
codigo: 69,
imagem: 4,
clicou: false,
},
{
codigo: 70,
imagem: 5,
clicou: false,
},
],
[
{
codigo: 71,
imagem: 1,
clicou: false,
},
{
codigo: 72,
imagem: 2,
clicou: false,
},
{
codigo: 73,
imagem: 3,
clicou: false,
},
{
codigo: 74,
imagem: 4,
clicou: false,
},
{
codigo: 75,
imagem: 5,
clicou: false,
},
{
codigo: 76,
imagem: 1,
clicou: false,
},
{
codigo: 77,
imagem: 2,
clicou: false,
},
{
codigo: 78,
imagem: 3,
clicou: false,
},
{
codigo: 79,
imagem: 4,
clicou: false,
},
{
codigo: 80,
imagem: 5,
clicou: false,
},
],
[
{
codigo: 81,
imagem: 1,
clicou: false,
},
{
codigo: 82,
imagem: 2,
clicou: false,
},
{
codigo: 83,
imagem: 3,
clicou: false,
},
{
codigo: 84,
imagem: 4,
clicou: false,
},
{
codigo: 85,
imagem: 5,
clicou: false,
},
{
codigo: 86,
imagem: 1,
clicou: false,
},
{
codigo: 87,
imagem: 2,
clicou: false,
},
{
codigo: 88,
imagem: 3,
clicou: false,
},
{
codigo: 89,
imagem: 4,
clicou: false,
},
{
codigo: 90,
imagem: 5,
clicou: false,
},
],
[
{
codigo: 91,
imagem: 1,
clicou: false,
},
{
codigo: 92,
imagem: 2,
clicou: false,
},
{
codigo: 93,
imagem: 3,
clicou: false,
},
{
codigo: 94,
imagem: 4,
clicou: false,
},
{
codigo: 95,
imagem: 5,
clicou: false,
},
{
codigo: 96,
imagem: 1,
clicou: false,
},
{
codigo: 97,
imagem: 2,
clicou: false,
},
{
codigo: 98,
imagem: 3,
clicou: false,
},
{
codigo: 99,
imagem: 4,
clicou: false,
},
{
codigo: 100,
imagem: 5,
clicou: false,
},
],
]

我现在这样做的方式是使用forEach:

matriz.forEach((x) => {
let achou = false;
// console.log("x: ", x, id)
// console.log("typeof(x): ", typeof x)
x.forEach((y) => {
if (y.codigo === id) {
// Realizo a inversão do booleano
y.clicou = !y.clicou;
console.log('y: ', y);
achou = true;
throw BreakException;
}
});
if (achou) {
throw BreakException;
}
});

问题是我不能停止循环,我相信一定有一个更好的方法,也许使用'find'命令。

当它是单个数组时,我可以用find来做这个。

我建议使用for循环遍历数组,使用Array.find在嵌套数组中查找项目,然后使用break语句终止循环:

const matriz=[[{codigo:1,imagem:1,clicou:!1},{codigo:2,imagem:2,clicou:!1},{codigo:3,imagem:3,clicou:!1},{codigo:4,imagem:4,clicou:!1},{codigo:5,imagem:5,clicou:!1},{codigo:6,imagem:1,clicou:!1},{codigo:7,imagem:2,clicou:!1},{codigo:8,imagem:3,clicou:!1},{codigo:9,imagem:4,clicou:!1},{codigo:10,imagem:5,clicou:!1}],[{codigo:11,imagem:1,clicou:!1},{codigo:12,imagem:2,clicou:!1},{codigo:13,imagem:3,clicou:!1},{codigo:14,imagem:4,clicou:!1},{codigo:15,imagem:5,clicou:!1},{codigo:16,imagem:1,clicou:!1},{codigo:17,imagem:2,clicou:!1},{codigo:18,imagem:3,clicou:!1},{codigo:19,imagem:4,clicou:!1},{codigo:20,imagem:5,clicou:!1}],[{codigo:21,imagem:1,clicou:!1},{codigo:22,imagem:2,clicou:!1},{codigo:23,imagem:3,clicou:!1},{codigo:24,imagem:4,clicou:!1},{codigo:25,imagem:5,clicou:!1},{codigo:26,imagem:1,clicou:!1},{codigo:27,imagem:2,clicou:!1},{codigo:28,imagem:3,clicou:!1},{codigo:29,imagem:4,clicou:!1},{codigo:30,imagem:5,clicou:!1}],[{codigo:31,imagem:1,clicou:!1},{codigo:32,imagem:2,clicou:!1},{codigo:33,imagem:3,clicou:!1},{codigo:34,imagem:4,clicou:!1},{codigo:35,imagem:5,clicou:!1},{codigo:36,imagem:1,clicou:!1},{codigo:37,imagem:2,clicou:!1},{codigo:38,imagem:3,clicou:!1},{codigo:39,imagem:4,clicou:!1},{codigo:40,imagem:5,clicou:!1}],[{codigo:41,imagem:1,clicou:!1},{codigo:42,imagem:2,clicou:!1},{codigo:43,imagem:3,clicou:!1},{codigo:44,imagem:4,clicou:!1},{codigo:45,imagem:5,clicou:!1},{codigo:46,imagem:1,clicou:!1},{codigo:47,imagem:2,clicou:!1},{codigo:48,imagem:3,clicou:!1},{codigo:49,imagem:4,clicou:!1},{codigo:50,imagem:5,clicou:!1}],[{codigo:51,imagem:1,clicou:!1},{codigo:52,imagem:2,clicou:!1},{codigo:53,imagem:3,clicou:!1},{codigo:54,imagem:4,clicou:!1},{codigo:55,imagem:5,clicou:!1},{codigo:56,imagem:1,clicou:!1},{codigo:57,imagem:2,clicou:!1},{codigo:58,imagem:3,clicou:!1},{codigo:59,imagem:4,clicou:!1},{codigo:60,imagem:5,clicou:!1}],[{codigo:61,imagem:1,clicou:!1},{codigo:62,imagem:2,clicou:!1},{codigo:63,imagem:3,clicou:!1},{codigo:64,imagem:4,clicou:!1},{codigo:65,imagem:5,clicou:!1},{codigo:66,imagem:1,clicou:!1},{codigo:67,imagem:2,clicou:!1},{codigo:68,imagem:3,clicou:!1},{codigo:69,imagem:4,clicou:!1},{codigo:70,imagem:5,clicou:!1}],[{codigo:71,imagem:1,clicou:!1},{codigo:72,imagem:2,clicou:!1},{codigo:73,imagem:3,clicou:!1},{codigo:74,imagem:4,clicou:!1},{codigo:75,imagem:5,clicou:!1},{codigo:76,imagem:1,clicou:!1},{codigo:77,imagem:2,clicou:!1},{codigo:78,imagem:3,clicou:!1},{codigo:79,imagem:4,clicou:!1},{codigo:80,imagem:5,clicou:!1}],[{codigo:81,imagem:1,clicou:!1},{codigo:82,imagem:2,clicou:!1},{codigo:83,imagem:3,clicou:!1},{codigo:84,imagem:4,clicou:!1},{codigo:85,imagem:5,clicou:!1},{codigo:86,imagem:1,clicou:!1},{codigo:87,imagem:2,clicou:!1},{codigo:88,imagem:3,clicou:!1},{codigo:89,imagem:4,clicou:!1},{codigo:90,imagem:5,clicou:!1}],[{codigo:91,imagem:1,clicou:!1},{codigo:92,imagem:2,clicou:!1},{codigo:93,imagem:3,clicou:!1},{codigo:94,imagem:4,clicou:!1},{codigo:95,imagem:5,clicou:!1},{codigo:96,imagem:1,clicou:!1},{codigo:97,imagem:2,clicou:!1},{codigo:98,imagem:3,clicou:!1},{codigo:99,imagem:4,clicou:!1},{codigo:100,imagem:5,clicou:!1}]];
let id = 5;
for (let i = 0; i < matriz.length; i++) {
const found = matriz[i].find(e => e.codigo == id);
if (found) {
found.clicou = !found.clicou;
console.log("y: ", found)
break;
}
}

你使用嵌套循环的想法是好的,只是你不能跳出forEach()。您可以使用一个简单的for循环,或者for...of下面的代码片段中的as。

const matriz = [[{codigo:1,imagem:1,clicou:!1},{codigo:2,imagem:2,clicou:!1},{codigo:3,imagem:3,clicou:!1},{codigo:4,imagem:4,clicou:!1},{codigo:5,imagem:5,clicou:!1},{codigo:6,imagem:1,clicou:!1},{codigo:7,imagem:2,clicou:!1},{codigo:8,imagem:3,clicou:!1},{codigo:9,imagem:4,clicou:!1},{codigo:10,imagem:5,clicou:!1}],[{codigo:11,imagem:1,clicou:!1},{codigo:12,imagem:2,clicou:!1},{codigo:13,imagem:3,clicou:!1},{codigo:14,imagem:4,clicou:!1},{codigo:15,imagem:5,clicou:!1},{codigo:16,imagem:1,clicou:!1},{codigo:17,imagem:2,clicou:!1},{codigo:18,imagem:3,clicou:!1},{codigo:19,imagem:4,clicou:!1},{codigo:20,imagem:5,clicou:!1}],[{codigo:21,imagem:1,clicou:!1},{codigo:22,imagem:2,clicou:!1},{codigo:23,imagem:3,clicou:!1},{codigo:24,imagem:4,clicou:!1},{codigo:25,imagem:5,clicou:!1},{codigo:26,imagem:1,clicou:!1},{codigo:27,imagem:2,clicou:!1},{codigo:28,imagem:3,clicou:!1},{codigo:29,imagem:4,clicou:!1},{codigo:30,imagem:5,clicou:!1}],[{codigo:31,imagem:1,clicou:!1},{codigo:32,imagem:2,clicou:!1},{codigo:33,imagem:3,clicou:!1},{codigo:34,imagem:4,clicou:!1},{codigo:35,imagem:5,clicou:!1},{codigo:36,imagem:1,clicou:!1},{codigo:37,imagem:2,clicou:!1},{codigo:38,imagem:3,clicou:!1},{codigo:39,imagem:4,clicou:!1},{codigo:40,imagem:5,clicou:!1}],[{codigo:41,imagem:1,clicou:!1},{codigo:42,imagem:2,clicou:!1},{codigo:43,imagem:3,clicou:!1},{codigo:44,imagem:4,clicou:!1},{codigo:45,imagem:5,clicou:!1},{codigo:46,imagem:1,clicou:!1},{codigo:47,imagem:2,clicou:!1},{codigo:48,imagem:3,clicou:!1},{codigo:49,imagem:4,clicou:!1},{codigo:50,imagem:5,clicou:!1}],[{codigo:51,imagem:1,clicou:!1},{codigo:52,imagem:2,clicou:!1},{codigo:53,imagem:3,clicou:!1},{codigo:54,imagem:4,clicou:!1},{codigo:55,imagem:5,clicou:!1},{codigo:56,imagem:1,clicou:!1},{codigo:57,imagem:2,clicou:!1},{codigo:58,imagem:3,clicou:!1},{codigo:59,imagem:4,clicou:!1},{codigo:60,imagem:5,clicou:!1}],[{codigo:61,imagem:1,clicou:!1},{codigo:62,imagem:2,clicou:!1},{codigo:63,imagem:3,clicou:!1},{codigo:64,imagem:4,clicou:!1},{codigo:65,imagem:5,clicou:!1},{codigo:66,imagem:1,clicou:!1},{codigo:67,imagem:2,clicou:!1},{codigo:68,imagem:3,clicou:!1},{codigo:69,imagem:4,clicou:!1},{codigo:70,imagem:5,clicou:!1}],[{codigo:71,imagem:1,clicou:!1},{codigo:72,imagem:2,clicou:!1},{codigo:73,imagem:3,clicou:!1},{codigo:74,imagem:4,clicou:!1},{codigo:75,imagem:5,clicou:!1},{codigo:76,imagem:1,clicou:!1},{codigo:77,imagem:2,clicou:!1},{codigo:78,imagem:3,clicou:!1},{codigo:79,imagem:4,clicou:!1},{codigo:80,imagem:5,clicou:!1}],[{codigo:81,imagem:1,clicou:!1},{codigo:82,imagem:2,clicou:!1},{codigo:83,imagem:3,clicou:!1},{codigo:84,imagem:4,clicou:!1},{codigo:85,imagem:5,clicou:!1},{codigo:86,imagem:1,clicou:!1},{codigo:87,imagem:2,clicou:!1},{codigo:88,imagem:3,clicou:!1},{codigo:89,imagem:4,clicou:!1},{codigo:90,imagem:5,clicou:!1}],[{codigo:91,imagem:1,clicou:!1},{codigo:92,imagem:2,clicou:!1},{codigo:93,imagem:3,clicou:!1},{codigo:94,imagem:4,clicou:!1},{codigo:95,imagem:5,clicou:!1},{codigo:96,imagem:1,clicou:!1},{codigo:97,imagem:2,clicou:!1},{codigo:98,imagem:3,clicou:!1},{codigo:99,imagem:4,clicou:!1},{codigo:100,imagem:5,clicou:!1}]];
let id = 5;
for (const x of matriz) {
for (const y of x) {
if (y.codigo === id) {
y.clicou = !y.clicou;
console.log('y: ', y);
break;
}
}
}

参见:短路阵列。每个人都喜欢为11年的讨论呼唤休息。

最新更新