我必须对正态分布图的数组进行排序,因此必须将其值从最小值到最大值进行排序,然后再返回到最小值,以创建一条曲线。
示例:
数组:
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做到这一点的任何想法?
答案 0 :(得分:3)
您可以使用sort
,reverse
和slice
做这样的事情:
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; }