@MRcracker

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

Есть массив let arr = [1, 2, 3, 2, 3, 4]. Как можно узнать равны ли его элементы между собой или нет и если есть равные элементы, то заменить их на х. Например, 1 и 4 не равны с другими и числа остаются, а 2 и 3 есть совпадения и их меняем на икс.
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
magerrrr
@magerrrr
JS Software Engineer
Для решения задачи важно, чтобы код был читабельным и понятным.

const arr = [1, 2, 3, 2, 3, 4];

const replaceTheSameElementsToX = array => {
    const result = [];
    let coincidence = 0;

    for(let i = 0; i < array.length; i++) {
        array.map(el => el === array[i] ? coincidence++ : coincidence);

        if (coincidence === 1) {
            result.push(array[i]);
        } else if (coincidence > 1) {
            result.push('x');
        }
        coincidence = 0;
    }
    return result; 
}

replaceTheSameElementsToX(arr); // [1, "x", "x", "x", "x", 4]


или тоже самое с помощью методов массива:

const arr = [1,2,3,2,3,4];

const findTheSameNumbers2 = array => array.map((elementOfBaseArray,i,baseArray) => baseArray.reduce((coincidence, currentValue, index, elementAsArray) => elementOfBaseArray === elementAsArray[index] ? coincidence + 1 : coincidence, 0) === 1 ? elementOfBaseArray : 'x');

findTheSameNumbers2(arr); // [1, "x", "x", "x", "x", 4]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
0xD34F
@0xD34F Куратор тега JavaScript
const count = arr.reduce((acc, n) => acc.set(n, (acc.get(n) || 0) + 1), new Map);

const newArr = arr.map(n => count.get(n) > 1 ? newValue : n);
Ответ написан
Ваш ответ на вопрос

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

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