javascript - js数组一个奇怪的问题
大家讲道理
大家讲道理 2017-04-11 12:31:06
[JavaScript讨论组]

如图所示,定义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);

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(7)
高洛峰

先将字符串转成数字再比较 否则是按 ASCII 码比较大小

console.log('429' < '14302'); // false
console.log(Number('429') < Number('14302')) // true
大家讲道理

这要看你是怎么理解大小的定义 -- 字符串的大小是默认情况下是从左往右ASCII码的大小。如果要按数字大小,则应该转换为Number然后比较,修改后的具体代码如下:


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);
// => ["429", "14302", "1", "0", "0", "159", "2", "0"]
高洛峰

因为你在比较字符串!

PHP中文网

因为你比较的是 String 而不是 Number。

天蓬老师

因为默认进行了字符串比较,按照字典序排序的话,c确实应该是["1542", "14302", "1", "0", "0", "159", "2", "0"]。
你想实现数学排序的话,得先把字符串转化为数字再比较

PHP中文网

楼上正解~

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

c.push(a[i]);

} else {

c.push(b[i]);

}
}
console.log(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;i<a.length; i++) { 
    if (a[i]>b[i]) {  //在这个地方,你的a[i] < b[i],你放入的是a的元素,大于b的时候,放入的还是b
        c.push(a[i]); 
    } else { 
        c.push(b[i]); 
    } 
} 
console.log(c);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号