Javascript:如何为正态分布图排序数组?

问题描述 投票:1回答:2

我必须为正态分布图排序数组,因此必须将其值从最小值排序到最大值,然后再回到最小值,创建一条曲线。

例:

阵:

[200, 300, 0, 100, 400]

如何排序:

[0, 100, 200, 300, 400, 300, 200, 100, 0]

有关如何在Javascript中执行此操作的任何想法?

javascript arrays charts normal-distribution
2个回答
3
投票

你可以使用sortreverseslice做这样的事情:

const array = [200, 300, 0, 100, 400]
const newArray = [...array.sort((a,b) => a - b), ...array.reverse().slice(1)]

console.log(newArray)
  • array.sort((a,b) => a - b)对阵列进行排序
  • array.reverse()反转排序的数组
  • slice(1)从反转数组中删除重复的最大值

注意:这只是根据您的请求创建重复值,从现有数组生成正态分布数组。但是,如果您只想将数组转换为正态分布,而不添加任何元素,那么请查看@Nina's excellent answer


3
投票

对于(降序)排序数组的元素的分布,您可以使用随机排序的键并将值映射到数组。

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.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
© www.soinside.com 2019 - 2024. All rights reserved.