jQuery每个函数用于单个和多个元素

时间:2013-05-14 18:14:11

标签: jquery json each

我有两种类型的JSON结果:

{
 "person":{
  "fname": "Homer",
  "lname": "Simpson"
  }
 }

{
 "person":[
  {
  "fname": "Homer",
  "lname": "Simpson"
  },
  {
  "fname": "Marge",
  "lname": "Simpson"
  }
  ]
 }

我想使用jQuery“each”:

$.each(response.person, function(i, person){...

但是当JSON有一个人与多个人时,“我”和“人”是不同的。 我看到单人响应没有数组“[]”,但是当我:

$.each([response.person], function(i, person){...
然后多人不起作用。 我正在寻找一种规范事物的方法,以便我可以一致地使用“每个”。

2 个答案:

答案 0 :(得分:6)

理想情况下,您最初会为您提供一个数组,但您始终可以.concat将结果转换为空数组。这将允许您一致地循环:

$.each([].concat(response.person), function(i, person){...

http://jsfiddle.net/MtzH8/

答案 1 :(得分:4)

测试它是否是数组。

$.each(($.isArray(response.person) ? response.person : [response.person]), function(i, person){...

或者您可以在迭代之前修改对象:

if (!$.isArray(response.person)) {
    response.person = [response.person];
}
$.each(response.person, function(i, person){...