我对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),它可以解释我想要实现的目标。
我怎么才能不重复三遍呢?
发布于 2014-07-21 16:32:24
您可以使用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...
}发布于 2014-07-21 16:32:15
请用英文描述一下你想要完成的事情。下面的答案假设您只是想迭代一个名称列表,并对每个名称进行一些处理。
您希望使用为循环。
var names = ["beth", "barry", "debbie", "peter"]
for (var i=0; i<names.length; i++) {
// access names[i]
}发布于 2014-07-21 16:37:44
最好的跨浏览器解决方案是使用传统的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
}https://stackoverflow.com/questions/24870066
复制相似问题