Я стучал нуб головой о стену на этом ...Trouble удаления элементов из многомерного массива, используя цикл (JavaScript)
У меня есть следующий код:
var guns2 =
[
["Model 17", "Glock"],
["Model 19", "Glock"],
["PPQ", "Walther"],
["P2000", "HK"],
["Model 92", "Beretta"],
["Model 34", "Glock"]
]
var gunsMake = function() {
for (i=0; i<guns2.length; i++){
var make = guns2[i][1];
if (make ==="Glock"){
}
else {
guns2.splice(i,1);
}
};
};
gunsMake();
console.log(guns2);
Результат Я получаю в консоли выглядит следующим образом:
[["Model 17", "Glock"], ["Model 19", "Glock"], ["P2000", "HK"], ["Model 34", "Glock"]]
То, что я хотел бы видеть, как:
[["Model 17", "Glock"], ["Model 19", "Glock"], ["Model 34", "Glock"]]
«[« P2000 »,« HK »]« не должно быть быть там ... У меня такое чувство, что оно имеет какое-то отношение к аргументу «guns2.length» в цикле for. так как он пропускает последующий массив каждый раз, когда он сращивается, но я не могу полностью обмотать мозг вокруг исправления.
Пожалуйста, кто-то направить меня правильно :)
Не изменяйте массив в то время как вы итерацию над ним. Вставьте желаемые результаты в другой массив. –
Ах, это тонна смысла, особенно для того, что мне нужно достичь в моей конечной цели. Будет ли «толчок» эффективным способом для достижения этого? –
Да, 'push' - это один из способов добавления элементов в массив. Сначала вам нужно создать другой массив, а затем «нажать» его внутри цикла. –