1

在我的对象循环中,使用earch function如何将值查找为“只是一个字符串” - 或“数组” - 或“对象” - while 循环..?

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

我的对象:

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 类型 - 总是返回对象。找到对象值以区分值和数组或对象..的方法是什么?

我的尝试:

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

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

} )

什么是正确的方法..

小提琴在这里

4

5 回答 5

2

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

typeof item === 'string' 或者 typeof item === 'object'

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

于 2013-08-05T05:17:21.300 回答
2

检查构造函数(类)?

''.constructor === String
[].constructor === Array
{}.constructor === Object
于 2013-08-05T05:19:21.887 回答
0

下面是您可以用来确定您的值是字符串/对象还是数组的代码: if($.isArray(yourVariable)) { // loop } else { //return }

于 2013-08-05T05:22:07.400 回答
0

使用$.isArray()来测试数组

于 2013-08-05T05:16:46.663 回答
0

使用 underscore.js 的isArray 函数

它是一个非常有用且轻量级的 JavaScript 实用程序库

它适用于几乎所有浏览器。

(function(){ return _.isArray(arguments); })();
=> false
_.isArray([1,2,3]);
=> true
于 2013-08-05T05:20:19.657 回答