如何像高斯函数一样排列数组,即最大值在中间,最小值在边缘?
例如
var Array = [5,2,7,4,1]
将输出以下数组:
[1,4,7,5,2]
最佳答案
我没有使用下划线函数,但您可以使用下划线/lodash 中的等效函数来缩短代码。
步骤:
- 按降序对数组进行排序
- 迭代数组并在开头和结尾交替添加排序数组中的元素
var arr = [5, 2, 7, 4, 1];
var sortedArr = arr.sort(function(a, b) {
return b - a;
});
var gaussianArr = [];
sortedArr.forEach(function(e, i) {
if (i % 2) {
gaussianArr.push(e);
} else {
gaussianArr.unshift(e);
}
});
console.log(gaussianArr);
document.write(gaussianArr);
想要下划线解决方案吗?
给你。 fiddle 。你不会发现 Vanilla JS 解决方案和 underscore 解决方案之间有太大区别(因为逻辑是相同的,只是语法不同)。
关于javascript - 像高斯函数一样排列数组(最大值在中间,最小值在边缘),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32678120/