Javascript 如何比较两个foreach循环数据

Javascript 如何比较两个foreach循环数据,javascript,jquery,Javascript,Jquery,我试图比较两个foreach循环数据,并在div中显示相关数据。在下面的脚本中,只比较第一行的数据 更多详细信息:我想在当前日期的两个时间范围内跟踪用户到达,我从一个表中获取用户名、城市和到达时间。和其他表中的预期城市时间范围,如您在响应数据中所看到的,在比较用户到达时间时,仅比较第一行(用户),忽略其他行 我想在与用户的相关城市比较日期时显示一个按钮。如果用户到达日期介于城市旅行开始时间和结束时间之间,则按钮应显示已到达标签,否则在途中显示标签 响应={ “结果1”:[{ “姓名”:“迈克”

我试图比较两个
foreach
循环数据,并在
div
中显示相关数据。在下面的脚本中,只比较第一行的数据

更多详细信息:我想在当前日期的两个时间范围内跟踪用户到达,我从一个表中获取用户名、城市和到达时间。和其他表中的预期城市时间范围,如您在响应数据中所看到的,在比较用户到达时间时,仅比较第一行(用户),忽略其他行

我想在与用户的相关城市比较日期时显示一个按钮。如果用户到达日期介于城市旅行
开始时间
结束时间
之间,则按钮应显示
已到达
标签,否则在途中显示
标签

响应={
“结果1”:[{
“姓名”:“迈克”,
“城市”:“伦敦”,
“阿里瓦卢时间”:“2020-06-06 18:31:57”
}, {
“名称”:“米兰”,
“城市”:“纽约”,
“阿里瓦卢时间”:“2020-06-06 20:21:44”
}],
“结果2”:[{
“城市”:“伦敦”,
“开始时间”:“08:00:00”,
“结束时间”:“12:00:00”
}, {
“城市”:“纽约”,
“开始时间”:“06:00:00”,
“结束时间”:“12:00:00”
}]
}
response.result1.forEach(函数(元素){
var city=element.city;
response.result2.forEach(函数(e){
const start=e.开始时间;
const end=e.end\u时间;
常量检查=element.arival\u时间;
const[日期,时间]=支票分割(“”);
const startDate=`${date}${start}`;
const endDate=`${date}${end}`;
const from=新日期(startDate).getTime();
const to=新日期(endDate).getTime();
const target=新日期(检查).getTime();
常数数组=e.city;
const isInArray=数组。包括(城市);
如果(isInArray==true){

如果(target>=from&&target我发现您的代码有两个问题:

  • result1[0]。city
    'London'
    (大写),但
    result2[0]。city
    =
    'London'
    (小写),因此您不会看到Mike的任何按钮

  • 在内部循环中,对
    $('.action').append(…)
    的调用没有任何效果,因为在内部循环完成之前,
    不存在

  • 以下是缓冲按钮并将其插入
    的更新代码:

    response.result1.forEach(函数(元素){
    var city=element.city;
    var buttons='';//按钮缓冲区
    response.result2.forEach(函数(e){
    const start=e.开始时间;
    const end=e.end\u时间;
    常量检查=element.arival\u时间;
    const[日期,时间]=支票分割(“”);
    const startDate=`${date}${start}`;
    const endDate=`${date}${end}`;
    const from=新日期(startDate).getTime();
    const to=新日期(endDate).getTime();
    const target=新日期(检查).getTime();
    常数数组=e.city;
    const isInArray=数组。包括(城市);
    如果(isInArray==true){
    如果(目标>=来自目标(&T)
    
    response.result1.forEach(function(element) {
        var city = element.city;
        var buttons = ''; // buffer for buttons
        response.result2.forEach(function(e) {
            const start = e.start_time;
            const end = e.end_time;
            const check = element.arival_time;
    
            const [date, time] = check.split(" ");
            const startDate = `${date} ${start}`;
            const endDate = `${date} ${end}`;
    
            const from = new Date(startDate).getTime();
            const to = new Date(endDate).getTime();
            const target = new Date(check).getTime();
            const array = e.city;
    
            const isInArray = array.includes(city);
    
            if (isInArray == true) {
                if (target >= from && target <= to) {
                    buttons += ('<button type="button" class="med_action pull-right btn btn-success"> Arrived</button>'); // append to buttons var
                } else {
                    buttons += ('<button type="button" class="med_action pull-right btn btn-warning"> on the way</button>'); // append to buttons var
                }
            }
        });
        var html = '<div class="details">' +
            '<h3><i class="fa fa-exclamation-circle"></i><span> ' + element.Name + '</span></h3>' +
            '<div class="form-inline">' +
            '<label> city : </label><span> ' + element.city + '</span>' +
            '</div>' +
            '</div>' +
    
            '<div class="action">' + buttons + '</div>' +
            '</div>'; // Insert buttons
    
        $('#container').append(html);
    });