Javascript JS:使用Length属性编写If语句

Javascript JS:使用Length属性编写If语句,javascript,if-statement,Javascript,If Statement,我对JS很陌生,所以对我放松点。我将这个数组放在一个变量中,并试图找到一种更好的方法来编写if语句。因此,如果变量中的名称增加,我就不需要更改if语句,因为它不会被硬编码 var names = ["beth", "barry", "debbie", "peter"] if (names[0] && names [1] && names [2] && names [3] { Do something... } 有些东西告诉我需要使用.l

我对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...
}
我知道那是错的。我认为需要找到每个元素的索引,并在其中循环,确保循环不超过数组中的值

感谢您的帮助。提前谢谢

更新:一些用户提醒我,我的问题可能不太清楚。我在这里设置了一个代码笔(),它可能解释了我试图实现的目标

另外,我怎样才能避免重复3次呢?

请用英语描述一下您正在努力完成的任务。下面的答案假设您只想迭代一个名称列表,并对每个名称进行一些处理

您想要使用循环

var name=[“贝丝”、“巴里”、“黛比”、“彼得”]
对于(var i=0;i,您可以使用来测试每个元素是否满足某些条件:

if (names.every(function (name) { return name })) {
  // Do Something
}
当发现第一个非真元素时,每个
都会自动停止测试,这可能是一个很大的优化,具体取决于数组的大小

传统上,您只需在数组上迭代并测试每个元素。您可以使用或使用简单的
for
循环来执行此操作。当您从
forEach
回调返回
false
找到非真元素时,您可以执行相同的提前终止

var allTrue = true;

names.forEach(function (name) {
  return allTrue = allTrue && name;
});

if (allTrue) { 
  // Do something...
}

最好的跨浏览器解决方案是使用传统的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
}
var name=[“贝丝”、“巴里”、“黛比”、“彼得”],
isValid=true,
我
对于(i=0;i
你可以试试这个

    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
    }
var checkCondition=true;

对于(var i=0;i如果我理解正确,你需要这样的东西

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(', '));
var name=[“贝丝”、“巴里”、“黛比”、“彼得”];
var notUndefinedNames=names.filter(函数(el){return el!==undefined;});
//如果有的话
if(names.length==notUndefinedNames.length)console.log(“你们都到了,太好了!坐下,我们开始上课吧。”);
//如果一个或更少

else if(notUndefinedNames.length)你的代码目的是什么?因为我不明白你想实现什么。你的if语句如书面所述,如果names数组的第1到第4个元素不是false、未定义或null,那么就做些什么。if语句应该说什么?
[“beth”、“barry”、“debbie”,“peter”].reduce(函数(a,b){return a&&b!==undefined;},true)
-如果所有项都没有返回
true
undefined@Grundy
每一个
都会更好option@meagar是的,我不知道每个:-)请注意,
forEach
在IE8和更低版本中不起作用。--+1但是
forEach
每种方法都不相似,因为后者可以缩短时间-circuit@thefourtheye答案中的链接页面为
every
添加了polyfill,而不是
forEach
,这是在纯javascript中实现这一点的唯一方法,无需担心cross浏览器兼容性是使用一个简单的
for
循环。没有必要通过要求polyfills@meager这是一个非常简单的场景,op在没有其他假设的情况下要求使用javascript解决方案。如果你在大型应用程序中到处都使用这种逻辑,那么是的,添加一个polyfill是值得的,但在这里我的问题已经更新了。希望这能更好地解释我要做的事情。
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(', '));