簡體   English   中英

javascript按值將項目推入列表索引

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM