2017-04-07 137 views
-2

我有一些特定的東西將被推入陣列(下面),我想按項目價格排序項目。我嘗試使用sort,但它不適合我。之後,我想循環該數組並檢索項目名稱和項目價格。排序數組

推項目到數組:array.push(itemName,itemPrice)

嘗試使用sort功能:

array.sort(function(a,b){ 
    return b[1] - a[1] 
}); 
+5

請加陣列爲好。 –

+0

你將不得不向我們展示數組數據是什麼樣的,所以我們可以看到如何正確分類。您的代碼正在嘗試對數組進行排序。 'array.push(itemName,itemPrice)'把兩個連續的,單獨的值放入數組中。它不會將數組推入數組中。爲此,你需要'array.push([itemName,itemPrice])'。 – jfriend00

回答

1

編輯:與妮娜的評論表示贊同。改變比較功能

看起來你需要一個對象數組並定義你自己的比較函數進行排序。

所以你需要元素添加到陣列像這樣:

array.push({itemName:name,itemPrice:price}) 

定義自定義比較函數

function compare(a,b) { 
    return a.itemPrice-b.itemPrice; 
} 

使用自定義功能

array.sort(compare) 
+1

你可以使用增量,沒有兩個比較的開銷。 –

1

我想你想的元組(ITEMNAME,ITEMPRICE)推到數組,可以做兩種方式:

array.push([itemName, itemPrice]) 

array.push({ itemName: itemName, itemPrice: itemPrice }) 
// and instead of accessing a[1] or b[1], access a.itemPrice and b.itemPrice respectively. 

的Array.push(X,Y)簡單地追加兩種不同元素的x和y到陣列

0

//排序BY鍵(和值)。

int[] keys = { 4, 7, 2, 0 }; 
    int[] values = { 1, 2, 3, 4 }; 
    Array.Sort(keys, values); 
    foreach (int key in keys) 
    { 
     Console.Write(key); 
     Console.Write(' '); 
    } 
    Console.WriteLine(); 
    foreach (int value in values) 
    { 
     Console.Write(value); 
     Console.Write(' '); 
    } 
    Console.WriteLine(); 

我希望這會幫助你;)

1

我想你想要做的是將物體不僅僅是值!

array.push({ 
    name: itemName, 
    price: itemPrice 
}); 

然後你就可以使用排序:

array.sort(function(a, b){ 
    return b.price - a.price; 
}); 
0

這裏是一個示例代碼,玩得開心!

var arr = [ 
 
\t { 
 
\t \t "name": "Item1", 
 
\t \t "price": 100, 
 
\t }, 
 
\t { 
 
\t \t "name": "Item2", 
 
\t \t "price": 500, 
 
\t }, 
 
\t { 
 
\t \t "name": "Item3", 
 
\t \t "price": 250, 
 
\t }, 
 
\t { 
 
\t \t "name": "Item4", 
 
\t \t "price": 1000, 
 
\t } 
 
] 
 

 

 
arr = arr.sort(function compare(a, b) { 
 
    if (a.price > b.price) 
 
    return 1; 
 
    if (a.price < b.price) 
 
    return -1; 
 
    return 0; 
 
}); 
 

 
console.log(arr);