@MRcracker

Как проверить элементы массива на совпадение?

Дан массив. Подскажите, как можно проверить все его элементы на совпадение и если в строке есть похожие, то заменить в результате произведение этого числа на кол-во повторений.

P.S. Понимаю. что задача простая. Подскажите, в каком направлении хотя бы мне искать пути решения

const arr = [
	[2, 2, 3, 9, 7],
	[6, 2, 4, 5, 8],
];
  • Вопрос задан
  • 374 просмотра
Решения вопроса 1
WblCHA
@WblCHA
Типо так:
const baseArr = [
    [2, 2, 3, 9, 7],
    [6, 2, 4, 5, 8],
  ];

  const multDoubles = (arr) => {
    const counted = arr.reduce((acc, num, i) => {
      if(acc.has(num)) {
        acc.get(num).push(i);
        return acc;
      }
      acc.set(num, [i]);
      return acc;
    }, new Map);

    const multedArr = [...arr];
    counted.forEach((indexes, num) => {
      if(indexes.length > 1) {
        const newNum = num * indexes.length;

        indexes.forEach((i) => {
          multedArr[i] = newNum;
        })
      }
    });

    return multedArr;
  };
  
  const result = baseArr.map((arr) => multDoubles(arr));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Самое простое - отсортировать массив и один раз пройти по нему, считая повторения.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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