【发布时间】:2015-02-14 16:22:56
【问题描述】:
这是一个 JS 初学者问题。我正在制作一个简单的应用程序,它需要我工作的日子、星期几,然后如果我今天工作就会提醒我。
//
var daysIWork = [
'Wednesday',
'Friday',
'Saturday',
'Sunday',
];
var dayToday = 'Saturday'; // I'll be changing this to a more advanced method, getDay? When I've figured out how to post this correctly.
for (var i = 0; i < daysIWork.length; i++) {
console.log(daysIWork[i])
}; // This posts the array correctly, yay.
这就是我卡住的地方。如果我输入一个与数组编号匹配的数字,即[1] 而不是[i],则该语句将弹出true。然而,使用下面的代码,结果总是false。
if (dayToday === daysIWork[i]) {
alert ('Noooo, you work today!');
} else {
alert ("Yes, you don't work today!");
}
我知道如何使用数组调用 [1] [2] 等使其工作,但我无法让它读取整个数组并以 true 的形式返回。
谢谢。
【问题讨论】:
-
你的
if在哪里?将其放在循环中时效果很好:jsfiddle -
重读您真正想要检测的问题,
dayToday是否在daysIWork范围内。所以你实际上会使用daysIWork.indexOf(dayToday) !== -1来检查它是否在数组中。对于 IE 8 及之前的版本,您需要使用 polyfill MSN: Array.prototype.indexOf()。 -
好的,但它会遍历整个数组并发布。 IE 我的 4 个项目,返回 3 false 和 1 true,这在当前代码中是有意义的。但是我只想要一个真实的和一个虚假的回来。如果 dayToday 和 daysIWork 中的某一天匹配,则发布 true 如果没有发布错误警报。
-
所以这将在 for or if niese 范围内。
-
daysIWork.indexOf(dayToday) !== -1有什么问题?
标签: javascript arrays string loops