【问题标题】:how to use jquery to transverse a javascript object如何使用 jquery 来横向 javascript 对象
【发布时间】:2023-04-09 20:21:01
【问题描述】:

这是我的客户端代码

<!DOCTYPE html>
 <html lang="en">
 <head>
   <meta charset="utf-8">
   <title>Alerter</title>
 </head>
 <body>
   <script src="jquery.min.js"></script>
   <script src="http://www.example.com:8001/socket.io/socket.io.js"></script>
   <script>
     $(document).ready(function(){

       var socket = io.connect('http://www.example.com:8001');
       socket.on('message', function (data) { do_message(data) });
     });

   function do_message(data){
     var $obj=$(jQuery.parseJSON(data));
     //now what goes in here? 
   };
</script>
</body>
</html>

我收到的 javascript 对象看起来像

{
    "root": {
        "status": [
            "OK"
        ],
        "alert": [
            {
                "$": { "src": "web" },
                "time": [ "1349316382" ],
                "id": [ "user1" ]
            },
            {
                "$": { "src": "web" },
                "time": [ "1349316391" ],
                "id": [ "user2" ]
            },
        ]
    }
}

我想要做的是遍历每个“警报”条目并采取适当的措施(实际架构比我上面显示的要复杂一些)

jQuery 选择器是完成这项任务的正确工具,还是我应该回到原生 javascript(即 getElementsByTagName 或类似的)。所有的 jQuery 文档都是基于从 DOM 中选择有效的 html 标签,我不知道如何从收到的消息中选择任意标签。

【问题讨论】:

    标签: jquery socket.io


    【解决方案1】:

    您可以尝试使用 jQuery 中的 $.each 来迭代您的对象.. 试试这个

    console.log('status is : ' + data.root.status[0]);
    
         $.each(data.root.alert , function(i, value){
              console.log ('Dollar is : ' + value["$"]["src"]);
               console.log ('Time is : ' + value["time"][0]); 
               console.log ('ID is : ' + value["id"][0]); 
         });
    

    FIDDLE

    【讨论】:

    • 与我勾选的答案基本相同-抱歉,我无法将两个答案标记为正确。
    【解决方案2】:

    您可以使用$.forEach 迭代数据:

    var obj = jQuery.parseJSON(data);
    
    $.each(obj['root']['alert'], function(index, value) {
        console.log(value.id);
    });
    

    或者你可以只使用普通的 JS:

    var obj = jQuery.parseJSON(data);
    var alerts = obj['root']['alert'];
    
    for (var key in alerts) {
        var value = alerts[key];
    
        console.log(value.id);
    });
    

    【讨论】:

      【解决方案3】:

      jQuery 选择器不能用于纯 JavaScript 对象。

      http://api.jquery.com/jQuery/

      使用普通对象
      目前唯一支持的操作 用 jQuery 包裹的纯 JavaScript 对象是: .data()、.prop()、.bind()、.unbind()、.trigger() 和 .triggerHandler()。

      您必须使用 jQuery.each() 或纯 JavaScript 循环进行迭代。

      【讨论】:

        猜你喜欢
        • 2012-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-12
        • 2017-01-18
        • 1970-01-01
        相关资源
        最近更新 更多