2012-06-01 39 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; 
}​