使用Jquery如何区分对象值是数组还是只是值..?

时间:2013-08-05 05:15:05

标签: jquery object each

在我的对象循环中使用earch function如何找到值“只是一个字符串” - 或“数组” - 或“对象” - 循环通过..?

如果我发现值为“数组” - 那么我想重新循环数组。但是我怎样才能使用jquery找到可循环或可返回的值..?

myobject:

var input = {
    "DashBoard": [

    {
        "title": "DashBoard" //non-loopable
    }, {
        "widget": [{ //loop-able - it could be a object (so loop-able)
            "slide": "To do"
        }, {
            "slide": "Teamspace"
        }, {
            "slide": "Recent Activity"
        }]
    }
    ]}

但是使用Jquery类型 - 返回always对象。找到对象值以区分值与数组或对象的方式是什么??

我的尝试:

$.each(input.DashBoard, function (index, item) {

    console.log(index, $.type(item)); //always return object..!

} )

什么是正确的方式..

fiddle is here

5 个答案:

答案 0 :(得分:2)

使用typeof运算符来获取操作数的类型。

typeof item === 'string' typeof item === 'object'

但是当它遇到一个数组时,它只是将它作为一个对象返回。为此,您可以使用jQuery的$.isArray方法

答案 1 :(得分:2)

检查构造函数(类)?

''.constructor === String
[].constructor === Array
{}.constructor === Object

答案 2 :(得分:0)

使用$.isArray()测试数组

答案 3 :(得分:0)

使用underscore.js的isArray function

这是非常实用且轻量级的javascript实用程序库

几乎适用于所有浏览器。

(function(){ return _.isArray(arguments); })();
=> false
_.isArray([1,2,3]);
=> true

答案 4 :(得分:0)

以下是可用于确定您的值是字符串/对象还是数组的代码:     如果($。IsArray的(yourVariable))     {     //循环     }     其他     {      //返回     }