我对JS很新,所以对我很轻松。我在变量中得到了这个数组,并且我试图找到一种更好的方法来编写if语句。因此,如果该变量中的名称增长,我不需要更改if语句,因为它不会被硬编码。
var names = ["beth", "barry", "debbie", "peter"]
if (names[0] && names [1] && names [2] && names [3] {
Do something...
}
有些东西告诉我,我需要使用.length
属性,但我无法解决如何在该语句中正确使用它。有点像:
if (names[i] * names.length) {
Do something...
}
我知道这是错的。我认为需要找到每个索引并循环遍历它确保循环不会超过数组中的值。
感谢任何帮助。提前谢谢!
更新:有些用户提醒我,我的问题可能不太明确。我在这里设置了一个CodePen(http://codepen.io/realph/pen/KjCLd?editors=101),可以解释我想要实现的目标。
P.S。如何阻止我重复3次?
答案 0 :(得分:1)
您可以使用every
来测试每个元素是否满足某些条件:
if (names.every(function (name) { return name })) {
// Do Something
}
every
会在找到第一个非真实元素时自动停止测试,这可能是一个很大的优化,具体取决于数组的大小。
传统上,您只需迭代数组并测试每个元素。您可以使用forEach
或简单的for
循环执行此操作。通过从false
回调中返回forEach
,您可以在找到非真实元素时执行相同的提前终止。
var allTrue = true;
names.forEach(function (name) {
return allTrue = allTrue && name;
});
if (allTrue) {
// Do something...
}
答案 1 :(得分:0)
请详细说明您要完成的工作。以下答案假设您只想迭代一个名称列表并对每个名称进行一些处理。
您想要使用for循环。
var names = ["beth", "barry", "debbie", "peter"]
for (var i=0; i<names.length; i++) {
// access names[i]
}
答案 2 :(得分:0)
最好的跨浏览器解决方案是使用传统的for循环。
var names = ["beth", "barry", "debbie", "peter"],
isValid = true,
i;
for (i = 0; i < names.length; i++) {
isValid = isValid && names[i];
}
if (isValid) {
// do something
}
答案 3 :(得分:0)
你可以试试这个;
var checkCondition = true;
for(var i = 0; i<names.length; i++){
if(names[i] !== something) {
checkCondition = false;
break;
}
}
if(checkCondition){
//Do what ever you like if the condition holds
}else{
// Do whatever you like if the condition does NOT holds
}
答案 4 :(得分:0)
如果我理解正确,你需要这样的东西
var names = ["beth", "barry", "debbie", "peter"];
var notUndefinedNames = names.filter(function(el){return el !== undefined;});
// if all
if (names.length === notUndefinedNames.length) console.log("You're all here. Great! Sit down and let's begin the class.");
// if one or less
else if (notUndefinedNames.length <= 1) console.log("I can't teach just one person. Class is cancelled.");
else console.log("Welcome " + notUndefinedNames.join(', '));