JavaScript for 循环只返回数组中的最后一项
JavaScript for loop returns last item in array only
我在下面有以下函数,其中有两个 for 循环遍历 JSON 文件。我遇到的问题是在barFactory函数中调用的第二个循环中,它只返回数组中的最后一项。我如何解决这个问题,我正在调用图表对象以在每次迭代中创建,因此它不应该根据我的逻辑发生。
var looper = function(sec0, vz, lOrR) {
$('#' + lOrR + 'Title').text(sec0);
for (var i = 0; i < vz[0]['Areas'].length; i++) {
var tText = Object.keys(vz[0]['Areas'][i]);
var root = vz[0]['Areas'][i][tText][0];
barFactory(root, sec0, lOrR, i, tText);
}
function barFactory(sec1, sec0, lOrR, i, tText) {
var dataName;
for (var j = 0; j < sec1[sec0].length; j++) {
charts.title.text = sec1[sec0][j]["Label"];
dataName = sec1[sec0][j]['Metrics'][5]['Rep Res. %'].slice(0, -1);
charts.series[0].name = dataName;
charts.series[0].data = [parseFloat(dataName)];
chart = new Highcharts.Chart(charts);
}
}
}
有几件事:- 正如芭芭拉所说,我们没有看到您正在更改 renderTo 参数- 您使用相同的对象创建图表,这可能会导致一些错误
我的建议是:
var dataName = dataName = sec1[sec0][j]['Metrics'][5]['Rep Res. %'].slice(0, -1);
chart = new Highcharts.Chart(
Highcharts.merge(charts, {
chart: {
renderTo: new_container_variable
},
title: {
text: sec1[sec0][j]["Label"]
},
series: [{
data: [parseFloat(dataName)],
name: dataName
}]
})
);
另外,您确定:dataName = sec1[sec0][j]['Metrics'][5]['Rep Res. %'].slice(0, -1);
- sec1
之后的路径是正确的吗?尝试console.log(dataName);
以确保您传递正确的值,而Highcharts会出错。
相关文章:
- 如何从对象数组中获取最后一项
- 为什么只有最后一项显示,而不是全部显示
- 删除最后一项jquery
- 为什么我的“for”循环只获取 html 中的最后一项
- 我无法将下拉列表的默认值设置为最后一项
- 流星批量插入仅插入最后一项
- 我怎么能知道元素是最后一项
- 如何删除WinJS组绑定列表的最后一项
- 使用handlers.js模板以数组中的最后一项为条件
- empty().append()追加循环中的最后一项
- jQuery只附加最后一项
- 将属性添加到 for 循环中的最后一项
- 如何按排序键顺序获取对象中的最后一项
- for 循环中的 addEventListener 始终添加到最后一项
- 从数组中删除最后一项
- CasperJS只从我的for循环中多次发布最后一项
- 在 JavaScript 中处理数组中的最后一项
- 胡子.js带有数组,最后一项除外
- 通过jQuery在最后一项之后插入
- JavaScript for 循环只返回数组中的最后一项