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");
}

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

谢谢大家啊。

javascript数组 for循环 JavaScript

死神的乌鸦 10 years ago

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

湯淺比吕美 answered 10 years ago

推测你是想看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);

二小姐蕩漾 answered 10 years ago


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

狙击秒卫星 answered 10 years ago


 user.indexOf(id) > -1 ? console.log('has') : console.log('not');

sariri answered 10 years ago

Your Answer