如何从Array转换货币字符串

时间:2014-08-13 11:38:24

标签: javascript arrays

我有一个数组,其中包含一个数组列表,其值为' dollar'。 我需要从该列表中获取最高价格和最低价格。

这是尝试过的,

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

2 个答案:

答案 0 :(得分:6)

问题是你的阵列中有非法字符。通过包裹''让他们喜欢字符串。

像贝洛一样

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

答案 1 :(得分:0)

如果您更正了列表数组中的错误,那么可能很简单就是您的朋友

var _array = ["$1.09", "$3.07", "$2.223"];
_array.sort(function(a, b) {
    return Number(a.replace(/[^0-9\.]+/g, "")) - Number(b.replace(/[^0-9\.]+/g, ""));
});

console.log(_array[0], "   ", _array[_array.length - 1]);

打开浏览器检查器并运行上面的代码。

感谢@Meze的贡献,让10.01高于2或喜欢