簡體   English   中英

Javascript根據數字鍵對對象數組進行排序

[英]Javascript sort an array of objects based on numeric key

我有一個看起來像這樣的對象數組:

var data = [
 {
   title: 'Shirt',
   position: 3
 },
 {
   title: 'Ball',
   position: 1,
 }
]

我怎么能對它進行排序以在這樣的for loop使用。

for(var i in data) {

}

我試過:

for(var i in data | orderBy:'position')

但這是有角度的,所以普通的 Javascript 不起作用。

我認為它們必須是在循環之前對數組進行排序的某種方法,或者在循環中添加過濾器,不確定哪種方法是最好的。

但這是有角度的,所以普通的 Javascript 不起作用。

只需使用 JavaScript 排序功能即可。 它也適用於 Angular(TypeScript)。

注意:在對數字進行排序時,您可以簡單地使用緊湊比較

myArray.sort((n1,n2) => n1 - n2);

 var data = [ { title: 'Shirt', position: 3 }, { title: 'Ball', position: 1, } ]; data.sort(function(a, b) { return a.position- b.position; }) console.log(data);

使用Array.prototype.sort ( doc ) 並根據需要傳遞比較函數:

 var data = [ { title: 'Shirt', position: 3 }, { title: 'Ball', position: 1, }, // add for actually seeing the correct result { title: 'Cake', position: 2, } ]; function compareFunction(a,b){ if(a.position > b.position) return 1; else return -1; } data.sort(compareFunction); console.log(data);

您可以使用 arr.sort([compareFunction])。

如果 compareFunction(a, b) 小於 0,則將 a 排序到低於 b 的索引,即 a 在前。

如果 compareFunction(a, b) 返回 0,則使 a 和 b 彼此保持不變,但相對於所有不同元素進行排序。

如果 compareFunction(a, b) 大於 0,則將 b 排序到低於 a 的索引,即 b 在前。

當將特定的一對元素 a 和 b 作為兩個參數時, compareFunction(a, b) 必須始終返回相同的值。 如果返回不一致的結果,則排序順序未定義。

例如 -

     myarray.sort((a,b) => {
       if(a.position > b.position)
        return 1
        else
        return -1
})

這是一種冒泡排序方法:

var data = [
    {
      title: 'Shirt',
      position: 3
    },
    {
      title: 'Ball',
      position: 1,
    },
    {title: "h",
position:0}
   ]
  

   for(let i=0;i<data.length;i++)
   for(let j=0;j<data.length - 1;j++){
    if(data[j].position > data[j + 1].position){
    var first = data[j]
    var second = data[j + 1]
    data[j] = second;
    data[j + 1] = first;
    
    }
    
    }


console.log(data)
   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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