Answer

Answer

t.me/js_test

Ответ:

function moveToTheEnd(arr, el) {
    return [
        ...arr.filter((v) => !Object.is(v, el)),
        ...arr.filter((v) => Object.is(v, el)),
    ];
}

Объяснение:

Решение достаточное простое, сначала фильтруем исходный массив так чтобы в него не входил элемент который должен быть в конце, затем затем фильтруем исходный массив так чтобы в нём остались только элементы el. И в конце сшиваем оба этих массива с помощью spread оператора. В методе filter для сравнения используется Object.is а не тройное равно для того чтобы работало для всех значений (NaN, -0 и тд.).

Код для проверки:

function moveToTheEnd(arr, el) {
    return [
        ...arr.filter((v) => !Object.is(v, el)),
        ...arr.filter((v) => Object.is(v, el)),
    ];
}

console.log(moveToTheEnd([1, 2, 0, 1, 0, 1, 0, 3, 0, 1], 0));
console.log(moveToTheEnd([NaN, false, 0, "yay", null], NaN));
console.log(moveToTheEnd([0, -0, +0, -0, 0], -0));

Report Page