Цикл работает неправильно
цикл идет по каждому массиву и проверяет есть ли совпадение, если да, то ставит знак '+' но в том что я писал работает некорректно, тут должен ставить '+' ко всех 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>')
}
