
如图所示,定义a、b两个数组,然后进行循环比较,c数组存放两个数组比较后的那个较小的值,结果c数组的第一个值是那个较大的值,剩下的才是较小的值,请问这是什么原因?
备注:(代码如下)
var a = ["429", "14302", "1", "0", "0", "159", "20", "0"];
var b = ["1542", "46886", "4", "0", "0", "644", "2", "0"];
var c = [];
for(var i = 0, length = a.length; i < length; i++) {
if(a[i] < b[i]) {
c.push(a[i]);
} else {
c.push(b[i]);
}
}
console.log(c);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
先将字符串转成数字再比较 否则是按
ASCII码比较大小这要看你是怎么理解大小的定义 -- 字符串的大小是默认情况下是从左往右ASCII码的大小。如果要按数字大小,则应该转换为Number然后比较,修改后的具体代码如下:
因为你在比较字符串!
因为你比较的是 String 而不是 Number。
因为默认进行了字符串比较,按照字典序排序的话,c确实应该是["1542", "14302", "1", "0", "0", "159", "2", "0"]。
你想实现数学排序的话,得先把字符串转化为数字再比较
楼上正解~
var a = ["429", "14302", "1", "0", "0", "159", "20", "0"];
var b = ["1542", "46886", "4", "0", "0", "644", "2", "0"];
var c = [];
for(var i = 0, length = a.length; i < length; i++) {
if(Number(a[i]) < Number(b[i])) {
} else {
}
}
console.log(c);
var a = ["429", "14302", "1", "0", "0", "159", "20", "0"];