如何创建Jquery数组对象

时间:2015-01-29 10:19:09

标签: jquery highcharts

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

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

我在表格中有这样的值

<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>

我试图从表中创建这样的数组,但它不起作用

$('.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;
        } 
    });
});

任何人都可以帮我解决我犯错误的地方

提前致谢

2 个答案:

答案 0 :(得分:2)

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

首先,需要在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

答案 1 :(得分:1)

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

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

您在内部label的回调函数中声明变量each,因此当第二次单元格第二次调用回调时,它将会消失并重新创建。在该循环之外声明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 ]);
    } 
  });
});