【问题标题】:Using Jquery how to distinguish whether the object value is array or just value..?使用Jquery如何区分对象值是数组还是只是值..?
【发布时间】:2013-08-05 17:38:09
【问题描述】:

在我的对象循环中使用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..!

} )

什么是正确的方法..

fiddle is here

【问题讨论】:

标签: jquery object each


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    检查构造函数(类)?

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

    【讨论】:

    • 它很有用,只需添加一点点来使用它进行比较 - ''.constructor.name === 'String'。希望现在这会更好。
    • FF 22, Chrome 28, Opera 12.15, Node 0.8.12 -- Works ''.constructor === 字符串完美。我认为不需要检查名称
    【解决方案3】:

    使用$.isArray() 测试数组

    【讨论】:

      【解决方案4】:

      使用 underscore.js 的 isArray function

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

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

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

      【讨论】:

      • 当 jQuery 中提供相同的方法时,为什么额外库的开销
      【解决方案5】:

      以下是您可以用来确定您的值是字符串/对象还是数组的代码: if($.isArray(yourVariable)) { // 环形 } 别的 { //返回 }

      【讨论】:

        猜你喜欢
        • 2017-06-27
        • 2020-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-17
        相关资源
        最近更新 更多