我正在使用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()条件?
我很抱歉,如果它是一个非常基本的问题,我只是坚持下去。 任何帮助或信息将不胜感激。谢谢你的时间。
答案 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
,则无法检查值的长度。
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;
也许最好的方法是创建一个函数并将3
作为maxLength参数传递
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;
答案 2 :(得分:1)
您也可以使用Array.some()
注意:检查浏览器兼容性和/或使用polyfill
[1, 2, 3, 4, 5, 6, 7].some((el, idx) => {
console.log(el);
return ++idx === 4; /* <-- return top 4 */
});
&#13;
答案 3 :(得分:0)
非常简单,我认为你只需要经历数组的长度。
var users2 = ['s','g'];
for(let a=0;a<users2.length;a++){
console.log(users2[a]);
}