[英]javascript push an item into list index by value
可以說我有一個清單:
var list = []
現在,我想以某種方式將一些值插入列表,使其索引應根據其值
list.push(6)
list.push(2)
這將給我結果[6, 2]
但是我想要的是其索引應根據其值進行管理。
這里2
小於6
所以2
應該先出現
[2, 6]
。 如果再次執行list.push(1)
它應該給出類似[1,2,6]
結果,依此類推。
如何在javascript中實現呢?
您可以使用Array#sort
。
var list = []; list.push(6); list.push(2); list.push(1); list.sort(function(a, b) { return a - b; }); console.log(list);
您可以使用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
您只需要使用Array sort函數 。 由於它將數組項視為字符串,並且默認情況下無法正確對整數進行排序,因此您需要為此使用自定義比較功能:
var arr = [1, 22, 6, 2 ];
arr.sort(function(a, b){
return a - b;
});
console.log( arr );
我們可以覆蓋列表對象的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]
這些其他答案都沒有抓住重點,它們假定列表已經填充,然后您將其推入。您需要做的是將要推入數組的數字與數組本身進行比較,將值拼接到像這樣:
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/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.