我有一个数组,其中包含一个数组列表,其值为' 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
但它不起作用,任何人都可以帮助我。
答案 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)
注意: - .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)
答案 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或喜欢