javascript - 如何搜索一长串 javascript 对象以找到 'sent: 0' 的第一个实例

标签 javascript

这里有一个主要的循环问题。

我的数据是这样的:

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/

相关文章:

javascript - 如何将毫秒转换为日期和时间?

javascript - 删除表单中的多个按钮并将其替换为 JavaScript 中点击时的文本框

javascript - RxJS 运算符在完成之前不会再次发送到内部可观察对象

javascript - 寻找有关如何突出显示图像区域的建议

javascript - .单击使用 id 进行工作?

javascript - 表单序列化javascript(无框架)

javascript - 使用 KendoUI 的堆积图

javascript - jQuery mouseup 和不良行为

javascript - 我在数组中得到相同的 id

javascript - React 代码无法在渲染之前设置全局上下文