сортировать массив без изменения пустых или пустых мест, используя javascript - PullRequest
2 голосов
/ 25 апреля 2020

У меня есть несколько массивов одинаковой длины, и четыре случайных значения присутствуют в случайных позициях для каждого из этих массивов, и мне нужно отсортировать этот массив чисел, при условии, что позиция нуля не изменена.

Например, Мои массивы:

var arr1 = [6, 3, null, 5, null, 4, null, null];
var arr2 = [null, 7, 4, null, 6, null, 5, null];

Ожидаемый результат должен быть: (нулевые позиции не изменены)

var arr1 = [3, 4, null, 5, null, 6, null, null];
var arr2 = [null, 4, 5, null, 6, null, 7, null];

Пожалуйста, помогите сообщить или предложить какой-нибудь код в ниже функции, чтобы достичь этого требования в javascript

function sortByNotalterNull(arr) {

 //somecode here

 return arr;
};
sortByNotalterNull(arr1);

1 Ответ

4 голосов
/ 25 апреля 2020

Вы можете взять вспомогательный массив для индексов not null и другой для чисел, отсортировать их и применить их к ранее сохраненным индексам исходного массива.

const sort = array => {
        let indices = [];

        array
            .filter((v, i) => v !== null && indices.push(i))
            .sort((a, b) => a - b)
            .forEach((v, i) => array[indices[i]] = v);
        return array;
    };

console.log(...sort([6, 3, null, 5, null, 4, null, null]));
console.log(...sort([null, 7, 4, null, 6, null, 5, null]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...