ForEach перебор массива
Я пытаюсь отфильтровать повторяющиеся элементы и занести результат в другой массив.
let arr = ["php", "php", "css", "css", "script", "script", "html", "html", "java"]; // (ИЗНАЧАЛЬНЫЙ МАССИВ)
Мой код:
let arr = ["php", "php", "css", "css", "script", "script", "html", "html", "java"];
let result = [];
arr.forEach(function(item, i, arr) {
for(let j = 1; j < 9; j++) {
if (item[i] !== arr[j]) {
result.push(item);
}
}
})
document.writeln(result); // [php,css,script,html,java] ожидаемый результат
Я беру цикл из изначального массива (forEach), потом запускаю внутри него еще один цикл, который плюсует на 1 значение индекса (j), а затем сами элементы я сравниваю на схожесть по индексу, если не схож то пушу в другой массив. Но в ходе выполнения получается другой результат:
Ответы (2 шт):
Автор решения: Илья
→ Ссылка
Попробуйте так:
let arr = ["php", "php", "css", "css", "script", "script", "html", "html", "java","php"];
let result = [];
document.writeln(arr+"<br>")
for (let str of arr)
{
if (!result.includes(str)) {
result.push(str);
}
}
document.writeln(result+"<br>")
Автор решения: Sergei Kirjanov
→ Ссылка
Можно сделать Set, в котором все элементы по одному, а потом обратно массив.
const arr = ["php", "php", "css", "css", "script", "script", "html", "html", "java","php"]
console.log([...new Set(arr)])
