假设我有一个清单:
var list = []
现在我想以一种索引应该根据其值
的方式在列表中插入一些值list.push(6)
list.push(2)
这会给我[6, 2]
但我想要的是它的索引应根据其值进行管理。
此处2
小于6
,因此2
应首先出现,并提供结果
[2, 6]
。如果我再次list.push(1)
它应该给出[1,2,6]
之类的结果,等等。
我如何在javascript中实现这一目标?
答案 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/