【问题标题】:How to extract multidimensional array in jquery?如何在jquery中提取多维数组?
【发布时间】:2014-11-18 08:51:28
【问题描述】:

我有一个格式如下的数组

{
    "items": {
        "0": 96,
        "1": 121566,
        "3": "2014-10-30"
    },
    "name": [
        "asdfghj"
    ],
    "misc": [
        {
            "VehicleBrandName": "FORD",
            "VehicleTypeName": "111111"
        },
        {
            "VehicleBrandName": "BMW",
            "VehicleTypeName": "75676576"
        },
        {
            "VehicleBrandName": "FORD",
            "VehicleTypeName": "2222"
        }
    ]
}

这里的 items,name,misc 是来自不同表的值。作为对象传递的项目和名称和其他都是数组。

在jquery函数中

var misc = data.misc;
var items = data.items;
var name = data.customer;
$.each(items, function (key, value) {// working function
    part = $('.check').find('*[data-field="' + key + '"]');
    part.val(value);
});
$(misc).each(function (key, value) {//not working
   for (name in value) {
      if (value.hasOwnProperty(name)) {
         part = $('.check').find('*[table-field="' + name + '"]');
         part.text(value[name]);
       }
   }
   $('tr.active').clone().appendTo('tbody');
});

而HTML代码是

<table class="table table-condensed table-striped check" id="TableAppend">
   <tbody class="items">
      <tr class="active">
         <td style="font-size: 12px;" width="70"><p table-field="VehicleBrandName"></p></td>
         <td style="font-size: 12px;" width="70"><p table-field="VehicleTypeName"></p></td>
      </tr>
    </tbody>
 </table>

项目工作正常。但是 misc 只得到一个值。其他两个值没有得到。 我期待以下输出。

FORD       BMW        FORD 
111111     75676576   2222

请帮帮我……

【问题讨论】:

  • 可以分享html示例吗
  • 我不认为 "$(misc).each(function (key, value)" 是问题所在,你需要使用.find('*[table-field="' + key + '"]' 什么的。
  • “没有获得任何价值”是什么意思? Your loop works correctly 基于提供的代码 - 我可以 console.log $(misc).each 循环内的变量...
  • 什么不工作?我试图循环你的代码工作的数据
  • 您到底想得到什么?在您的代码中,您只是覆盖了 html,并因此得到“FORD 2222”。 jsfiddle.net/4u1wtgm0

标签: javascript php jquery arrays multidimensional-array


【解决方案1】:

而不是

 part = $('.check').find('*[table-field="' + name + '"]');

试试

part = $('.active').find('*[table-field="' + name + '"]');

因为class=active 对应于table-field

你可以试试这样的:

  <script>

    $(document).ready(function(){ 

   var json=JSON.parse('{"items":{"0":96,"1":121566,"3":"2014-10-30"},"name":["asdfghj"],"misc":[{"VehicleBrandName":"FORD","VehicleTypeName":"111111"},{"VehicleBrandName":"BMW","VehicleTypeName":"75676576"},{"VehicleBrandName":"FORD","VehicleTypeName":"2222"}]}');
var misc=json.misc;
console.log(json);
var string1=""; 
var string2="";
           $(misc).each(function (key, value) {//not working

               for (name in value) { 
                   if (value.hasOwnProperty(name)) {  
                     part = $('.active').find('*[table-field="' + name + '"]');
                    // 
                    if(parseInt(value[name])%1== 0){
                    string1=string1+"  "+value[name];   
                    part.text(string1);   
                    $('.active').append(part);  
                    }else{
                        string2=string2+"  "+value[name];
                        part.text(string2);
                         $('.active').append(part);
                    }    

                   }
               }

            });

    });

   </script>

【讨论】:

    【解决方案2】:

    这样做:

    var $tr = $('tr.active');
    $(misc).each(function (key, value) {
       var $newTr = $tr.clone();
       $('[table-field="VehicleBrandName"]', $newTr).text(value.VehicleBrandName);
        $('[table-field="VehicleTypeName"]', $newTr).text(value.VehicleTypeName);
    
        $newTr.appendTo('tbody')
    });
    $tr.remove()
    

    http://jsfiddle.net/rz4uswen/1/

    【讨论】:

    • 谢谢。它成功了。我试图概括该功能。如果表字段不包含更多,代码会很长。如果数据库字段名称被赋予表字段,那么是否可以在这个函数中获取字段名称以便我可以概括??
    猜你喜欢
    • 2015-05-10
    • 2013-04-19
    • 1970-01-01
    • 2020-12-13
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    相关资源
    最近更新 更多