如何检查JSON响应元素是否为数组?

Ser*_*Amo 24 javascript json

我收到了下一个JSON响应

    {
    "timetables":[
        {"id":87,"content":"B","language":"English","code":"en"},                                                
        {"id":87,"content":"a","language":"Castellano","code":"es"}],
    "id":6,
    "address":"C/Maestro José"
    }
Run Code Online (Sandbox Code Playgroud)

我想实现下一个伪代码功能

for(var i in json) {            
    if(json[i]  is Array) {
    // Iterate the array and do stuff
    } else {
    // Do another thing
    }
}
Run Code Online (Sandbox Code Playgroud)

任何的想法?

Jam*_*mes 50

还有其他方法,但据我所知,这是最可靠的:

function isArray(what) {
    return Object.prototype.toString.call(what) === '[object Array]';
}
Run Code Online (Sandbox Code Playgroud)

因此,要将其应用于您的代码:

for(var i in json) {                    
    if(isArray(json[i])) {
    // Iterate the array and do stuff
    } else {
    // Do another thing
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 现在JavaScript中有一个本机函数可以执行此操作([`Array.isArray(obj)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ isArray)),虽然旧的浏览器仍然需要依赖它作为polyfill. (5认同)

Que*_*tin 5

function isArray(ob) {
  return ob.constructor === Array;
}
Run Code Online (Sandbox Code Playgroud)

  • 这在大多数情况下都有效,但当您从不同的窗口/框架测试数组时,它会失败,因为构造函数会不同。 (9认同)