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

→ Ссылка