2012-06-01 71 views
1

我有一個這樣的數組與十進制值如何使用符號對數組進行排序?

["$79.34", "$99.23", "$149", "$139.34", "$379", "$199.00", "$5", "$9", "$14", "$39", "$59", "$24", "$29", "$189", "$10,$20", "$500", "$1", "$4", "$8.66", "$2", "$19", "$18", "$11", "$15", "$40", "$89", "$100", "$400.15", "$30,$119", "$15,$30"]

對於我的商店,我無法弄清楚如何使用JavaScript來對它們進行排序? $(或任何符號)似乎對我造成問題?

我該如何解決這個問題?

+1

對於在同一個字符串中似乎有兩個單獨數量的值,比如最後兩個值(其中包括):「$ 30,$ 119」,「$ 15,$ 30」是什麼?是錯誤還是故意? –

+0

啊這是故意的 - 結果可以是這樣嗎? – Andy

+2

這使問題顯着複雜化。 – Codeman

回答

3
var prices = [...] 
prices.sort(function(a,b) { return (a.substring(1)) - (b.substring(1)); }) 

會做的伎倆。

+0

唯一的問題是它不處理「10美元,20美元」的情況,雖然這將是非常奇怪的確有這樣的數據 – Codeman

+0

是啊,同意:)。 – Art

0

編輯:我寫了一個JSFiddle to demonstrate this

function sortPrices(priceStrings) 
{ 
    //first sanitize the data 
    for (var i = 0; i < priceStrings.length; i++) 
    { 
     if (priceStrings[i].toString().search(",") != -1) 
     { 
      var splits = priceStrings[i].toString().split(","); 
      priceStrings.splice(i, 1) 
      priceStrings = priceStrings.concat(splits); 
      i--; 
     } 
    } 
    var prices = []; 
    for (var i = 0; i < priceStrings.length; i++) 
    { 
     priceStrings[i] = priceStrings[i].toString().replace("$", ""); 
     prices.push(parseFloat(priceStrings[i])); 
    } 

    prices.sort(function(a,b){return a - b}); 

    return prices; 
}​