for循环 - javascript 数组循环 结果输出一次的优化
高洛峰
高洛峰 2017-04-10 15:25:16
[JavaScript讨论组]
var has = false
if(user.length>0){
    for(var j=0;j<user.length;j++){
        if(id === user[j]){
            has = true
        }else{
            has = false;
        }
    }
}else{
    has = false;
}

if(has){
    console.log("has");
}else{
    console.log("not");
}

对于这样的一段代码,如何让他写的更优雅?或者通过其他的写法来改写,也行。

谢谢大家啊。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(4)
天蓬老师
user.indexOf(id) > -1 ? console.log('has') : console.log('not');
高洛峰
var has = false;

if(user.length>0){
    for (var j = 0; j < user.length; j++) {
        id === user[j] ? has = true : has = false;
    }
} else {
    has = false;
}

has === true ? console.log("has") : console.log("not");
伊谢尔伦

推测你是想看user数组里是否包含id, 所以你的代码本身有些问题的,for循环结束,has只有一个,所以你每次循环都改变它的值没什么用,只取决于最后一次循环

var word = 'not';
if(user.length) {
    for(var j=0;j<user.length;j++) {
        if(id === user[j]) {
            word = 'has';
            break;
        }
    }
}
console.log(word);
迷茫

ES5

var has = false
if(user.length>0){
    has = user.filter(function(item){id === item});
}
console.log(has ? 'has' : 'not');

另外:
写for循环的时候

for(var j=0;j<user.length;j++)

写成这样比较好

for(var j = 0, len = user.length; j < len; j++)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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