Мне нужно отсортировать массив для диаграммы нормального распределения, поэтому его значения должны быть отсортированы от минимального значения до максимального значения, а затем обратно к минимальному значению, создавая кривую.
Пример:
Множество:
[200, 300, 0, 100, 400]
Как это должно быть отсортировано:
[0, 100, 200, 300, 400, 300, 200, 100, 0]
Любые идеи о том, как это сделать в Javascript?
@AlbertiBuonarroti да, я сделал. Я добрался до того места, где я сортирую массив и создаю диаграмму, но я не мог перевернуть массив, когда он достигает максимума.
Не могли бы вы поделиться своим кодом, чтобы мы могли использовать ваше решение?
Многочисленные способы сделать это... покажите, что вы пробовали. Цель здесь — помочь исправить ваш код, чтобы не писать весь код за вас.
Отсортируйте его, затем добавьте перевернутую копию.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете сделать что-то подобное, используя sort, reverse и slice:
const array = [200, 300, 0, 100, 400]
const newArray = [...array.sort((a,b) => a - b), ...array.reverse().slice(1)]
console.info(newArray)array.sort((a,b) => a - b) сортирует массивarray.reverse() переворачивает отсортированный массивslice(1) чтобы удалить повторяющееся максимальное значение из перевернутого массиваПримечание: это просто генерирует массив нормального распределения из существующего массива, создавая повторяющиеся значения, как вы просили. Но если вы хотите просто преобразовать массив в нормальное распределение, без добавив какие-либо элементы, то взгляните на @Отличный ответ Нины.
Спасибо, @adiga. Я отметил ваш ответ как принятый из-за вашего объяснения. Я не мог перевернуть массив, не продублировав значение перед вашим ответом.
Для распределения элементов (по убыванию) отсортированного массива вы можете использовать случайную сортировку ключей и сопоставить значение с массивом.
var data = [200, 300, 0, 100, 200, 300, 0, 100, 400].sort((a, b) => b - a),
result = Array
.from(data.keys())
.sort((a, b) => b % 2 - a % 2 || (a % 2 ? b - a : a - b))
.map(i => data[i]);
console.info(result);.as-console-wrapper { max-height: 100% !important; top: 0; }
Что вы пытались решить проблему?