我有一个保存数组列表的数组,其值以“美元”表示。
我需要从列表中选择最高价格和最低价格。

这是尝试过的

var _array = [$1.09,$3.07,$2.223];
var number = Number(_array.replace(/[^0-9\.]+/g,""));
a= Math.max.apply(Math,number); // $3
b= Math.min.apply(Math,number); // $1

但是它不起作用,任何人都可以帮助我。

Demo Link

最佳答案

问题是您的数组中包含非法字符。通过将它们包装在''中,使它们像字符串一样。

像波纹管一样做

var _array = ['$1.09','$3.07','$2.223'];
var numbers = _array.map(function(curr){
    return Number(curr.replace(/[^0-9\.]+/g,""))
})
a= Math.max.apply(Math,numbers); // 3
b= Math.min.apply(Math,numbers); // 1
console.log(a,b)

DEMO

注:- .map函数在IE8上不起作用,因此您可以在此处使用for循环。像波纹管
var _array = ['$1.09','$3.07','$2.223'];
var numbers = [];

for(var i=0;i<_array.length;i++){
    numbers.push(_array[i].replace(/[^0-9\.]+/g,""));
}

a= Math.max.apply(Math,numbers); // 3
b= Math.min.apply(Math,numbers); // 1
console.log(a,b)

DEMO

关于javascript - 如何从数组转换货币字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25285154/

10-12 12:23
查看更多