在循环内构建 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);
}
我不知道标题是否错误...我不知道我应该用哪个术语来解释想要的结果 - 我试图达到的最终结果是这样的:
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);
}