如何创建 Jquery 数组对象

How to create a Jquery array object

我必须按以下格式将值传递给 highChart

data: [
     ['Firefox',   45.0],
     ['IE',       26.8],
]

我在 table 中有这样的值

<table>
    <tr>
        <th colspan="2">
            <div align="left">Expenditure in, or on behalf of, Scotland </div>            
        </th>
    </tr>
    <tr class="row">
        <td>Public sector debt interest</td>
        <td><?php echo $x ?>></td>
    </tr>
    <tr class="row">
        <td>Public sector debt interest</td>
        <td><?php echo $x ?>></td>
    </tr>
</table>

我尝试像这样从 table 创建数组,但它不起作用

$('.row').each(function (i) {
    var data = [];
    $(this).find('td').each(function (j, v) {
        if (j == 0)
            var label = $(this).html();
        else {
            var val = $(this).html();
            data[label] = val;
        } 
    });
});

谁能帮我解决我哪里做错了

提前致谢

您尝试创建的数据结构是一个包含数组的数组。它是原生 JS 构造,与 jQuery 无关。您遇到的问题是您试图通过提供 key/value 对来创建数组项,这对对象来说很好,但在这里不起作用。

首先,需要在each之外定义父数组。然后您需要为每一行创建一个新数组并将其推送到父数组。您不需要遍历 td 元素,因为您需要同时获取这两个元素来创建数组项。试试这个:

var data = [];
$('.row').each(function (i) {
    var label = $(this).find('td').eq(0).text(); // get value of the first td as a number
    var value = parseFloat($(this).find('td').eq(1).text()); // and the second
    data.push([label, value]); // add the new item to the array
});

Example fiddle

您正在回调函数中声明变量 data。这意味着它将为每一行重新创建,并且一旦您遍历所有行,它将不再可用。在循环外声明它。

您将值以 属性 的形式放入变量中,而不是数组项。这意味着数组仍然是空的。创建一个数组,并添加到数组 data.

您在内部 each 的回调函数中声明了变量 label,因此它会消失并在第二个单元格第二次调用回调时重新创建。在该循环外声明 label 以保留调用之间的值。

结果中的值应该是数字,而不是字符串,所以你应该解析它。

var data=[];
$('.row').each(function (i) {
  var label, val;
  $(this).find('td').each(function (j, v) {
    if (j == 0) {
      label = $(this).html();
    } else {
      val = parseFloat($(this).html());
      data.push([ label, val ]);
    } 
  });
});