Cześć
Mam dwuwymiarową tablicę taką jak tu (tylko większą):
const gameArr = [
[{},{}],
[{},{}]
]
Każdy obiekt w tablicy ma parametr name który jest stringiem.
Potrzebuję napisać funkcje, która, jeśli w rzędzie lub kolumnie wystąpi obok siebie trzy lub więcej obiektów z takim samym parametrem name -
zwróci tablicę zawierającą położenia tych obiektówów np:
[[2,0], [3,0],[4,0],[1,1],[1,2],[1,3],[1,4]]
Stworzyłem funkcje która ma za zadanie to robić
ale jest mało czytelna i nie działa :-) :
function findMachingElements() {
let counter = 0;
let currentType = "";
let machingElements = [];
let currentElements = [];
function checkElement(x, y) {
const element = gameArr[x][y];
const name = element["name"];
if (currentType === name) {
counter = counter++;
currentElements.push([x, y]);
} else {
checkIfTriple();
counter = 1;
currentType = name;
}
}
function checkIfTriple() {
if (counter >= 3) {
machingElements.concat(currentElements);
currentElements = [];
}
}
// columns
gameArr.forEach((row, x) => {
row.forEach((element, y) => {
checkElement(x, y);
});
});
checkIfTriple();
// rows
for (let y = 0; y < gameArr.length; y++) {
for (let x = 0; x < gameArr.length; x++) {
checkElement(x, y);
}
}
checkIfTriple();
return machingElements;
}
Bardzo proszę o pomoc !