Закажите неупорядоченный массив чисел от 1 до 8, чтобы конечные и начальные целые числа чередовались, например [8,1,7,2,6,3,5,4,]

epixme

Я новичок во всем этом и пытаюсь улучшить себя, решая проблемы и задачи.

Я столкнулся с проблемой, при которой у меня есть неупорядоченный массив, содержащий 8 целых чисел.

например [2,3,1,4,6,5,8,7]

Мне нужно отсортировать его [1,2,3,4,5,6,7,8] и переупорядочить массив так, чтобы массив начинался с конечного значения, а затем с первого значения и так далее, например [8,1,7 , 2,6,3,5,4,]

Я понял, что могу использовать map () для итерации по массиву, а затем использовать push () с pop () и shift (), однако он оставляет последние 2 числа в исходном массиве, и я не уверен, почему. Я обошел это, используя concat и реверс, но я все еще не понимаю, почему pop и shift не переносят все элементы.

Код ниже, в котором не задействованы все элементы:

  const reorder = (array) => {
    let store = []
    array.sort((a, b) => a - b).map((item, i) => {
        if (array) {
            store.push(array.pop())
            store.push(array.shift())
        }
    })
    return store
}


reorder([2, 3, 1, 4, 6, 5, 8, 7]) // returns [8,1,7,2,6,3]


Код, который работает, но мне нужно добавить concat и обратное:

const reorder = (array) => {
    let store = []
    array.sort((a, b) => a - b).map((item, i) => {
        if (array) {
            store.push(array.pop())
            store.push(array.shift())

        }
    })
    return store.concat(array.reverse()) 
}

reorder([2, 3, 1, 4, 6, 5, 8, 7]) //returns [8,1,7,2,6,3,5,4]

Спасибо за любую помощь

Изучение математики

Как я видел, никто не объяснял, почему исходное решение OP не работает. Вот почему:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/

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

Он не вызывается для отсутствующих элементов массива; то есть:

1.Индексы, которые никогда не задавались;

2. которые были удалены ; или же

3. которым никогда не присваивалась стоимость.

Итак, в нашем коде происходит следующее:
на первой итерации
[(2), 3, 1, 4, 6, 5, 8, 7]
Map выбирает первый элемент (2) в массиве и удаляет первый и последний символы в массиве, поэтому массив становится

[3,(1), 4, 6, 5, 8]
Теперь, поскольку карта не будет учитывать удаленные элементы, вызывается второй элемент (1) в текущем массиве, а также первый и последний элементы также удаляются:

[1, 4,(6), 5]
Теперь карта пытается найти третий элемент (6) и удалить первый и последний элементы:

[4,6]
Теперь карта пытается найти четвертый элемент, который находится вне пределов, поэтому функция карты завершится.

Итак, вам настоятельно не рекомендуется использовать Array.prototype.shiftили Array.prototype.popв Array.prototype.map.

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  3. 3

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  4. 4

    (fields.E300) Поле определяет связь с моделью, которая либо не установлена, либо является абстрактной.

  5. 5

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  6. 6

    How to click an array of links in puppeteer?

  7. 7

    Перебирайте несколько столбцов в фрейме данных Panda и находите уникальные значения подсчета

  8. 8

    Merging legends in plotly subplot

  9. 9

    ViewPager2 мигает / перезагружается при смахивании

  10. 10

    Текущая ветка не настроена для извлечения В конфигурации не найдено значение для ключа branch.master.merge

  11. 11

    How to normalize different curves drawn with geom = "step" when using stat_summary

  12. 12

    SQL Вычтите две строки друг от друга в одном столбце, чтобы получить результат

  13. 13

    Метод ошибки Illuminate \\ Database \\ Eloquent \\ Collection :: save не существует. в Laravel

  14. 14

    Ошибка «LINK: фатальная ошибка LNK1123: сбой при преобразовании в COFF: файл недействителен или поврежден» после установки Visual Studio 2012 Release Preview

  15. 15

    JavaFX TextArea как установить текст с автоматическим переносом новой строки

  16. 16

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  17. 17

    как я могу удалить vue cli 2?

  18. 18

    Отчеты Fabric Debug Craslytic: регистрация, отсутствует идентификатор сборки, применить плагин: io.fabric

  19. 19

    Elasticsearch - Нечеткий поиск не дает предложения

  20. 20

    Метки значений столбцов BarChart скрыты полем

  21. 21

    Ошибка Phusion Passenger с Rails 4 и Ruby 2.5

популярныйтег

файл