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

时间:2019-02-23 19:11:41

标签: javascript arrays charts normal-distribution

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

示例:

数组:

f = lambda x: x.replace('NEW_','')
df = people[['NEW_AGE', 'NEW_COUNTRY']].rename(columns=f)
people.loc[people['_merge'] == 'both', ['AGE', 'COUNTRY']] = df
print (people)
    NAME   AGE  NEW_AGE COUNTRY NEW_COUNTRY     _merge
0  LUCAS  80.0      NaN  BRAZIL         NaN  left_only
1  STEVE  35.0     35.0     USA         USA       both
2    BEN  25.0     25.0  CANADA      CANADA       both

必须如何对其进行排序:

[200, 300, 0, 100, 400]

关于如何使用Javascript做到这一点的任何想法?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

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

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; }