在循环内构建 2 级 javascript 数组

Build 2 level javascript array inside loop

我不知道标题是否错误...我不知道我应该用哪个术语来解释想要的结果 - 我试图达到的最终结果是这样的:

var data = [
    {
        value: 300,
        color:"#F7464A",
        highlight: "#FF5A5E",
        label: "Red"
    },
    {
        value: 50,
        color: "#46BFBD",
        highlight: "#5AD3D1",
        label: "Green"
    },
    {
        value: 100,
        color: "#FDB45C",
        highlight: "#FFC870",
        label: "Yellow"
    }
]

我正在尝试在 .each 循环中构建这种类型的数组,同时从表单中获取值(可以增加行数..)

这是我现在得到的("doesnt work"):

// GET VALUES FROM TR
var cnt = 0;
var datasets = [];
$('.pie-table > tbody > tr').length;
$('.pie-table > tbody > tr').each(function() {

    var ctrid = '#' + $(this).attr('id');
    var size = $(ctrid).find('input#value').val();
    var color = $(ctrid).find('input#color').val();
    var hlight = $(ctrid).find('input#highlight').val();
    var label = $(ctrid).find('input#label').val();



    if (size.length > 0) {
        datasets[cnt] = 'value: ' + size + ', color:"' + color + '", highlight: "' + hlight + '", label: "' + label + '"';
    }

    cnt++;
})

var pieData = [];
for (var key in datasets) {
    pieData.push(datasets[key]);
};

我如何才能获得与该循环中的示例类似的结构?

您的对象必须是对象,而不是字符串:

if (size.length > 0) {
  datasets[cnt] = {
    value: size,
    color: color,
    highlight: hlight,
    label: label
  };
}

看看这个:

if (size.length > 0) {
    // Take Blank Object
    var obj = {};

    // Create keys and assign value
    obj['value'] = size;
    obj['color'] = color;
    obj['highlight'] = hlight;
    obj['label'] = label;

    // Everything complete now push data in array
    datasets.push(obj);
}