Javascript 如何从数组转换货币字符串

Javascript 如何从数组转换货币字符串,javascript,arrays,Javascript,Arrays,我有一个数组,它包含一个数组列表,值以“美元”为单位。 我需要从列表中选择最高价格和最低价格 这就是我们尝试过的 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 但它不起作用,有人能帮我吗 问题是数组中有非法字符。将

我有一个数组,它包含一个数组列表,值以“美元”为单位。 我需要从列表中选择最高价格和最低价格

这就是我们尝试过的

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
但它不起作用,有人能帮我吗


问题是数组中有非法字符。将它们像字符串一样包装在
'

像贝娄那样做

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)
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)

注意:-IE8上的
.map
功能不起作用,因此您可以使用
进行
循环。像吼叫

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)
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)
var_数组=['$1.09'、'$3.07'、'$2.223'];
var数=[];

对于(var i=0;i来说,如果您更正列表数组sort is your friend中的错误,这可能很简单

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或类似值

数组元素的第一个字符不是数字,而是字符串。它们需要被引用,否则您(应该)会有语法错误。这是个好主意,但不是真的,因为字符串的排序将按字母顺序进行,所以
“$10.0”
将位于“$2.0”之前。
…是的,只要它的通用货币为$,并且所有列表都有$。它将被视为[“01.09”、“03.07”、“02.223”];因为$也将计算为相同的Unicode字符。请记住,实际的排序是在Unicode字符上执行的,而不是您看到的数字。您可以通过传递回调来解决它:
\u array.sort(函数(a,b){return Number(a.replace(/[^0-9\.]+/g,”));
尝试使用
[“$10.09”、“$1.12”、“$3.07”、“$2.223”]
array@Paullo这并不过分。需要比较“10”和“2”。