通过javascript重新排列最大最小形式的数组

时间:2017-10-12 11:44:13

标签: javascript arrays sorting output

在输出数组中应该是[第1个最高,第1个最低,第2个最高,第2个最低等等]例如: - 输入:arr [] = {1,2,3,4,5,6,7} 输出:arr [] = {7,1,6,2,5,3,4}

7 个答案:

答案 0 :(得分:2)

首先,使用有效的JS语法。

迭代数组,递增2。在每次迭代时,弹出数组中的最后一项并将其拼接到当前索引处的位置。



var arr = [1, 2, 3, 4, 5, 6, 7];

arr.sort((a, b) => a-b);

for (var i = 0; i < arr.length; i+=2) {
  arr.splice(i, 0, arr.pop());
}

console.log(arr);
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您可以在需要的索引处找到放置值的位置。此提案需要排序数组。

它可以在不改变数组的情况下工作。

&#13;
&#13;
var array = [1, 2, 3, 4, 5, 6, 7],
    result = array.reduce(function (r, a, i, aa) {
        r[i < aa.length >> 1 ? i * 2 + 1 : (aa.length - i - 1) * 2] = a;
        return r;
    }, []);
    
console.log(result);
&#13;
&#13;
&#13;

简单的解决方案。有变异。

&#13;
&#13;
var array = [1, 2, 3, 4, 5, 6, 7],
    result = [],
    action = 'shift',
    toggle = { pop: 'shift', shift: 'pop' };

while (array.length) result.push(array[action = toggle[action]]());

console.log(result);
&#13;
&#13;
&#13;

答案 2 :(得分:1)

快速而肮脏,似乎有效

&#13;
&#13;
function maxminform(arr){
  arr = arr.sort();
  var res = [];
  for(var i=0, j = arr.length-1; i <= j; i++, j--){
    if(i != j) res.push(arr[j]);
    res.push(arr[i]);
  }
  return res;
}


var a = [5,6,2,3,8,1,4,7];
console.log(maxminform(a));
&#13;
&#13;
&#13;

答案 3 :(得分:1)

这里我首先创建了一个排序数组,执行<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class="first"> First <div class="second"> Second <label for="inp">Label Input</label> <input type="text" name="inp" /> </div> </div>也是防止更改原始数组的好方法。

然后我映射结果。如果映射索引的模数= 0,我们从数组的末尾获取下一个数字,否则我们从头开始。 [].concat变量将与我们采用该值的乞讨和结束相距多远。

dv

答案 4 :(得分:0)

&#13;
&#13;
var a = [1, 2, 3, 7, 5, 6, 4];
var ans = [];

a.sort(function(a, b) {
  return a - b;
})

//For Even length
if (a.length % 2 == 0) {
  for (i = 0; i < a.length / 2; i++) {
    ans.push(a[a.length - 1 - i]);
    ans.push(a[i]);
  }
}
//For Odd length
else {
  ans.push(a[a.length - 1])
  a.pop();
  for (i = 0; i < a.length / 2; i++) {
    ans.push(a[i]);

    ans.push(a[a.length - 1 - i]);
  }
}
console.log(ans);
&#13;
&#13;
&#13;

答案 5 :(得分:0)

连续 最大/分钟 对......

&#13;
&#13;
var arr = [1, 2, 3, 4, 5, 6, 7], 
    result = [];
	
for(var i=0; i < arr.length; i++) {
    var max = Math.max.apply(null, arr), min = Math.min.apply(null, arr);
    arr.splice(arr.indexOf(max), 1);
    arr.splice(arr.indexOf(min), 1);
    result.push(max, min);
}
if (arr.length) result.push(arr.pop());

console.log(result);
&#13;
&#13;
&#13;

答案 6 :(得分:0)

array