Javascript JS:使用Length属性编写If语句
我对JS很陌生,所以对我放松点。我将这个数组放在一个变量中,并试图找到一种更好的方法来编写if语句。因此,如果变量中的名称增加,我就不需要更改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
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(', '));