Javascript数组 - 迭代数据元素

时间:2013-05-01 10:50:10

标签: javascript jquery loops

在下面的Javascript(JSON)数组中,以下代码将遍历员工,但是如何使用Javascript或jQuery / javascript解决1)个人员工编号,2)任务或3)站点?

$.each(mySchedule, function(i, obj) {
  console.log(obj.employees);
});
var mySchedule = 
  {
    "schedule": {
      "employees": [{
        "employee": "1000",
        "tasks": [{
          "task1": {
            "site":"McDo",
            "from":"0900",
            "to":"1000"
          }
        },
        {
          "task2": {
            "site":"McDo",
            "from":"0900",
            "to":"1000"
          }
        }]
      },
      {
        "employee": "2000",
        "tasks": [{
          "task3": {
            "site":"HJ",
            "from":"0900",
            "to":"1000"
          }
        },
        {
          "task4": {
            "site":"KFC",
            "from":"0900",
            "to":"1000"
          }
        }]
      }]
    }
  }

(编辑)我乐观地希望这样的事情可行。

$.each(mySchedule, function(i, obj) {               
     console.log(obj.site);                     
});

2 个答案:

答案 0 :(得分:3)

您的代码目前正在按计划进行迭代,而非员工......

$.each(mySchedule.schedule.employees, function(i, obj) {               
     console.log(obj.tasks);  
     console.log(obj.employee);                      
});

您必须逐个浏览元素才能获得所需的数据。对于站点,您需要完成任务,就像任务中的属性一样。任务是在员工的财产任务中,员工在财产员工中,而这又是按计划进行的......

答案 1 :(得分:2)

您应该稍微修改数据结构以直接解决员工问题,而无需迭代它们。

一个可能的例子是:

<script type="text/javascript">

var s = {
"schedule": {
  "employees": {
    "1000": {
        "tasks": [{
          "task1": {
            "site":"McDo",
            "from":"0900",
            "to":"1000"
          }
        },
        {
          "task2": {
            "site":"McDo",
            "from":"0900",
            "to":"1000"
          }
        }]
    },
    "2000": {
        "tasks": [{
          "task1": {
            "site":"McDo",
            "from":"0900",
            "to":"1000"
          }
        },
        {
          "task2": {
            "site":"McDo",
            "from":"0900",
            "to":"1000"
          }
        }]
    }
  }
}
}

console.log(s["schedule"]["employees"]["1000"]);
console.log(s["schedule"]["employees"]["2000"]);

</script>

<强>更新

OP告诉他如何获得员工名单,所以在这里:

console.log(s["schedule"]["employees"]);

上述代码会将员工列表作为键返回,并将随附的任务作为值返回。