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

bmw*_*128 6 each jquery json

我有两种类型的JSON结果:

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

{
 "person":[
  {
  "fname": "Homer",
  "lname": "Simpson"
  },
  {
  "fname": "Marge",
  "lname": "Simpson"
  }
  ]
 }
Run Code Online (Sandbox Code Playgroud)

我想使用jQuery"each":

$.each(response.person, function(i, person){...
Run Code Online (Sandbox Code Playgroud)

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

$.each([response.person], function(i, person){...
Run Code Online (Sandbox Code Playgroud)

然后多人不起作用.我正在寻找一种规范化事物的方法,以便我可以持续使用"每个".

Exp*_*lls 6

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

$.each([].concat(response.person), function(i, person){...
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/MtzH8/


use*_*654 4

测试它是否是一个数组。

$.each(($.isArray(response.person) ? response.person : [response.person]), function(i, person){...
Run Code Online (Sandbox Code Playgroud)

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

if (!$.isArray(response.person)) {
    response.person = [response.person];
}
$.each(response.person, function(i, person){...
Run Code Online (Sandbox Code Playgroud)