我如何排列一个像高斯函数的数组,即中间的最大值,边缘的最小值?
例如:
var Array = [5,2,7,4,1]将输出以下数组:
[1,4,7,5,2]发布于 2015-09-20 10:13:25
我没有使用下划线函数,但您可以使用来自下划线/存档的等效函数来缩短代码。
步骤:
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解决方案和下划线解决方案之间的差别(因为逻辑是相同的,只有不同的语法)。
发布于 2015-09-20 10:19:57
这是逻辑。
function gSort(arr) {
var _a = arr.slice()
_a.sort(function(a,b){return a-b});
_a.reverse();
var _isstart = false;
var _out = [];
for (var i = 0; i < _a.length; i++) {
if (i%2) {
_out.push(_a[i])
}else{
_out.splice(0,0,_a[i]); //You can use _out.unshift(_a[i]); also
}
}
return _out;
}
var array = [5,2,7,4,1]
console.log(gSort(array));
https://stackoverflow.com/questions/32678120
复制相似问题