我有一个保存数组列表的数组,其值以“美元”表示。
我需要从列表中选择最高价格和最低价格。
这是尝试过的
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/