如何为for循环设置多个限制:javascript

时间:2017-07-05 06:23:22

标签: javascript

我正在使用javascript数组,这里我使用for循环来获得前三个结果。(没有.length限制)

尝试使用

之类的东西
for(let a=0;a<usss.length || a<3;a++)

简单

var users = ['s','g','h','i'];
for(let a=0;a<3;a++){//dont want to use a < users.length
   console.log(users[a]);
}

问题

var users2 = ['s','g'];
for(let a=0;a<3;a++){
  console.log(users2[a]);
}

方式,

var users2 = ['s','g'];
for(let a=0;a<users2.length;a++){
 if(a<3){
  console.log(users2[a]);
 }
}

真实问题

  

如何避免在我上次声明的代码中使用额外的if()条件?

我很抱歉,如果它是一个非常基本的问题,我只是坚持下去。 任何帮助或信息将不胜感激。谢谢你的时间。

4 个答案:

答案 0 :(得分:2)

这似乎有效:

var users = ['s','g','h','i'];

var users2 = ['s','g'];

for(let a=0;(a<3 && a<users.length) ;a++){
   console.log(users[a]);
}

for(let a=0;(a<3 && a<users2.length);a++){
  console.log(users2[a]);
}

答案 1 :(得分:1)

如果不在某处使用if,则无法检查值的长度。

&#13;
&#13;
var users = ['s','g','h','i'];

// define the length value outside
var length = users.length >= 3 ? 3 : users.length;

for(let a=0; a < length; a++){
   console.log(users[a]);
}

var users2 = ['s','g'];
for(let a=0; a < length; a++){
   console.log(users[a]);
}


// you can define it inside the for loop but it's not so nice for reading
for(let a=0; a < (users.length >= 3 ? 3 : users.length); a++){
   console.log(users[a]);
}
&#13;
&#13;
&#13;

也许最好的方法是创建一个函数并将3作为maxLength参数传递

&#13;
&#13;
var logMax = function(users, maxLength, info) {
  let length = users.length >= maxLength ? maxLength : users.length;
  for(let a=0; a < length; a++){
    console.log(info, ' => ' + users[a]);
  }
}

var users = ['s','g','h','i'];
logMax(users, 3, 'first');

logMax(['s','g'], 3, 'second');
&#13;
&#13;
&#13;

答案 2 :(得分:1)

您也可以使用Array.some()

注意:检查浏览器兼容性和/或使用polyfill

&#13;
&#13;
[1, 2, 3, 4, 5, 6, 7].some((el, idx) => {
  console.log(el);
  return ++idx === 4; /* <-- return top 4 */
});
&#13;
&#13;
&#13;

答案 3 :(得分:0)

非常简单,我认为你只需要经历数组的长度。

 var users2 = ['s','g'];
for(let a=0;a<users2.length;a++){
  console.log(users2[a]);
}