@testertoster

Как сравнить элементы массива между собой?

Здравствуйте. Есть такая задача.

Дан произвольный многомерный массив. Например:
let arr = [
	[2, 2, 2, 9, 7],
	[7, 7, 2, 5, 8]
];


Нужно получить новый массив в котором все повторяющиеся элементы будут заменены на сумму этого числа на кол-во повторений в строке.

Как я понял нужно перебрать массив два раза, чтобы получить все его элементы, но мне не понятно как сравнить элементы массива из строки между собой?

for (let i = 0; i < arr.length; i++) {
	for (let k = 0; k < arr[i].length; k++) {
		if (arr[i][k] === arr[i][k]) {
			let counter =0;
			counter++;

		}
	}
}


Поясните, правильно ли я делаю?

P.S. В JS новичок. Буду благодарен, за помощь и если вы сошлетесь на метод перебора массива, который поможет в решении данной задачи. Всем спасибо))
  • Вопрос задан
  • 16155 просмотров
Решения вопроса 2
Wendor
@Wendor
nodejs developer / *nix admin
let arr = [
  [2, 2, 2, 9, 7],
  [7, 7, 2, 5, 8]
];

console.log(arr
  .reduce((a, line) => [...a, ...line], [])
  .reduce((a, val) => {
    let key = a.indexOf(val);
    if(key >= 0) {
        a[key] += val;
    } else {
      a.push(val);
    }
    return a;
  }, [])
);
//  [4, 4, 9, 14, 7, 5, 8]
Ответ написан
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега JavaScript
Руководитель frontend направления, предприниматель
https://learn.javascript.ru/array-iteration
https://developer.mozilla.org/ru/docs/Web/JavaScri...

И сразу, глядя в документацию, обращай внимание на то, создает ли метод новый массив, или меняет текущий.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Rerurk
let f1=a=>a.flat(1);
let fil=fa=>fa.filter((item,pos)=>fa.indexOf(item)!==pos)
let f=a=>a.map(a=>a.map(b=>fil(f1(arr)).indexOf(b)==-1?b:'x'))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы