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