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

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

谢谢大家啊。

阅读 4.8k
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++)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题