javascript按值将项目推送到列表索引中

时间:2016-06-21 05:49:07

标签: javascript arrays sorting

假设我有一个清单:

var list = []

现在我想以一种索引应该根据其值

的方式在列表中插入一些值
list.push(6)
list.push(2)

这会给我[6, 2]

的结果

但我想要的是它的索引应根据其值进行管理。

此处2小于6,因此2应首先出现,并提供结果

[2, 6]。如果我再次list.push(1)它应该给出[1,2,6]之类的结果,等等。

我如何在javascript中实现这一目标?

5 个答案:

答案 0 :(得分:2)

您可以使用Array#sort



var list = [];

list.push(6);
list.push(2);
list.push(1);

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

console.log(list);




答案 1 :(得分:1)

您可以使用sort()函数。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();

结果将是:

Apple,Banana,Mango,Orange

修改 对不起,对于数字,这个解决方案不起作用。你可以用这个:

按升序对数组中的数字进行排序:

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a-b});

积分的结果将是:

1,5,10,25,40,100

答案 2 :(得分:1)

您只需使用Array sort function即可。由于它将数组项视为字符串并且默认情况下不能正确排序整数,因此您需要使用自定义比较函数:

var arr = [1, 22, 6, 2 ]; 
arr.sort(function(a, b){
  return a - b; 
}); 
console.log( arr );

答案 3 :(得分:0)

我们可以覆盖列表对象的push函数。

var list = [];
var copyPush = list.push.bind(list);
list.push = function(){
  var toret = copyPush.apply(this,arguments);
  this.sort(function(a,b){ return a-b});
  return toret;
}

list.push(1);
list.push(3);
list.push(2);
list.push(5);
console.log(list); //[1, 2, 3, 5]

答案 4 :(得分:0)

这些其他答案缺少重点,他们假设列表已经填充,然后你推入。你需要做的是比较你要推入数组的数字,与数组本身,拼接像这样的值:

arr = [1,5,7];

var number = 0;

function findValue(value) {
  return function(element, index, array) {
    return (element <= value);
  }
}
var filtered = arr.filter(findValue(number))
index = arr.indexOf(filtered[filtered.length-1]) +1;
arr.splice(index, 0, number);

alert(arr);

这是一个工作小提琴: https://jsfiddle.net/GerardSimpson/h3t6vcka/