javascript - 像高斯函数一样排列数组(最大值在中间,最小值在边缘)

标签 javascript arrays underscore.js gaussian

如何像高斯函数一样排列数组,即最大值在中间,最小值在边缘?

例如

var Array = [5,2,7,4,1]

将输出以下数组:

[1,4,7,5,2]

最佳答案

我没有使用下划线函数,但您可以使用下划线/lodash 中的等效函数来缩短代码。

步骤:

  1. 按降序对数组进行排序
  2. 迭代数组并在开头和结尾交替添加排序数组中的元素

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/

相关文章:

c - 在 PIC18 上声明大型数组

javascript - 如何从 Nested Json array angular 2 打印和分离键和值并将其添加到选择框中

c - 数组的意外输出(没有真正获得输出,进程卡住并且没有结束)

javascript - 编辑对象数组中对象的属性

javascript - 这些 for 循环有什么不同吗?

javascript - 如何在 jquery droppable 事件中执行某些操作

javascript - 如何通过json对象的选项卡中的Id检查对象是否存在?

Javascript 原型(prototype)类继承

javascript setattribute 函数出现问题

javascript - Firestore 获取已查询文档的路径