Цикл работает неправильно

цикл идет по каждому массиву и проверяет есть ли совпадение, если да, то ставит знак '+' но в том что я писал работает некорректно, тут должен ставить '+' ко всех 3,2 и 1, но ставит к 2,3 и 5

в чем проблема моего кода?

let x = [
[1,2,3],
[2,8,4],
[3,4,5]
]
for(i=0;i<x.length;i++){
    for(j=0;j<x[i].length;j++){
        if(x[i]==x[j]){
        document.write(x[j]+'+')
        }
    }
        document.write('<br>')
}

 

введите сюда описание изображения

введите сюда описание изображения в картинке я выделил совпадение которые должны выделитсья, там от каждого красного элемента 2, а это значит если есть 2 или больше одинаковых цифер то выделяется добавлением +


Ответы (1 шт):

Автор решения: vsemozhebuty

Можно так (сначала проходимся по массиву первый раз и собираем информаию о количестве каждого элемента, потом уже проходим второй раз, проверяем количество по собранной информаии и выводим с плюсом или без):

const x = [
  [1,2,3],
  [2,8,4],
  [3,4,5],
];

const repetitions = {};

for(i = 0; i < x.length; i++){
    for(j = 0; j < x[i].length; j++){
        const number = x[i][j];
        repetitions[number] = (repetitions[number] || 0) + 1;
    }
}


for(i = 0; i < x.length; i++){
    for(j = 0; j < x[i].length; j++){
        const number = x[i][j];
        if(repetitions[number] > 1){
            document.write(number + '+');
        } else {
            document.write(number);
        }
    }
    document.write('<br>')
}

→ Ссылка