这里有一个主要的循环问题。
我的数据是这样的:
var mailouts =
{ signUp: { date: '', sent: 1 },
lesson1: { sent: 1, time: 20 },
lesson2: { sent: 0, time: 20 },
lesson3: { sent: 0, time: 20 },
lesson4: { sent: 0, time: 20 },
lesson5: { sent: 0, time: 20 }
}
我需要通过 mailouts
对象找到哪个 lesson
接下来要发送(也就是按顺序学习类(class)时 sent: 0
的第一个实例)。我无法控制数据结构,所以我需要使用这个模型。
我能想到的唯一方法真的很丑陋且难以管理(实际上有大约 50 个“类(class)”对象,不只是 5 个,只是为了简洁起见。)。
我能想到的唯一可行的方法是这样的:
if(mailouts.lesson1.sent === 1){
if(mailouts.lesson2.sent === 1){
if(mailouts.lesson3.sent === 1){
if(mailouts.lesson4.sent === 1){
if(mailouts.lesson5.sent === 1){
// Everything has been sent
}else{
// Send lesson5
}
}else{
// Send lesson4
}
}else{
// Send lesson3
}
}else{
// Send lesson2
}
}else{
// Send lesson1
}
当然 Javascript 必须有更简单的方法来处理这个问题,但我正在画空白。有什么想法吗?
编辑:澄清一下,我只需要在每次运行此脚本时发送一个“类(class)”——只需要列表中的下一个。
最佳答案
这段代码按顺序处理类(class)——即使它们在对象中不是按顺序排列的。迭代对象属性不保证任何类型的顺序,因此您必须自己强制执行。
var mailouts =
{ signUp: { date: '', sent: 1 },
lesson1: { sent: 1, time: 20 },
lesson2: { sent: 0, time: 20 },
lesson3: { sent: 0, time: 20 },
lesson4: { sent: 0, time: 20 },
lesson5: { sent: 0, time: 20 }
}
var firstLessonWithNoSent;
for (var lessonNum = 0; lessonNum < 50; lessonNum++) {
var lesson = mailouts["lesson" + lessonNum];
if (lesson && lesson.sent === 0) {
firstLessonWithNoSent = lesson;
break;
}
}
关于javascript - 如何搜索一长串 javascript 对象以找到 'sent: 0' 的第一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23127074/