使用push和split以及for循环创建数组

时间:2015-10-10 00:48:52

标签: jquery arrays json

请参阅下面的代码。

graph_data = 30,, [.00, 3.20],, 'Driving',,10,, [3.20, 5.17],,'Off-Duty';

var numbersArray = graph_data.split(',,');
var sritems = [];

for(var i=0;i<numbersArray.length;i++){
    var j = i;
    var k = j+1;
    var m = k+1;

    sritems.push({
      "x" : numbersArray[j],
      "y" : numbersArray[k],
      "label" : numbersArray[m]
    });
          i=m;
}

我想要下面的结果。

{x: 30, y:[.00, 3.20], label: "Driving"},{x: 10, y:[3.20, 5.17], label: "Off-Duty"}

我可以根据需要设置graph_data变量值。

3 个答案:

答案 0 :(得分:0)

使用:

sritems.push({
  "x": numbersArray[i],
  "y": numbersArray[++i],
  "label": numbersArray[++i]
});

这样您就不会需要j,k,m

目前,我相信您的代码会跳过一个值。

答案 1 :(得分:0)

您过度增加i,因为您将其设置为正文中的m+1,然后再次在1循环标头中添加for

要将第一个字段中的字符串转换为数字,请使用parseInt。要将字符串转换为第二个字段,请使用JSON.parse()(但要确保数字是有效的JSON - 它们需要小数点前的数字)。要转换第三个字段中的字符串,请删除周围的引号。

&#13;
&#13;
graph_data = "30,, [0.00, 3.20],, 'Driving',,10,, [3.20, 5.17],,'Off-Duty'";

var numbersArray = graph_data.split(',,');
var sritems = [];
for (var i = 0; i < numbersArray.length; i += 3) {
  var j = i;
  var k = j + 1;
  var m = k + 1;

  sritems.push({
    "x": parseInt(numbersArray[j], 10),
    "y": JSON.parse(numbersArray[k]),
    "label": numbersArray[m].trim().slice(1, -1) // Remove surrounding quotes
  });
}
alert(JSON.stringify(sritems, 2));
&#13;
&#13;
&#13;

答案 2 :(得分:0)

det(B)