如何在for循环中添加迭代器的变量以在javascript中引用对象中的数字属性?

时间:2015-03-20 03:08:40

标签: javascript json

我在Asp MVC中有一个来自JsonResult的Json,看起来像这样:

{"Nombres":["Daniel Aguilar Delgado","Francisco Javier Aguilera Candelas"],"Materias":{"0":["Herramientas Legales contra la Delincuencia Organizada","Derechos humanos, debido proceso y función policial","Perfiles delictivos"],"1":["Criminalística y tecnologías","Cultura de la legalidad","Perspectiva de género","La función de seguridad pública en el marco de la reforma constitucional al sistema procesal penal","Prevención social de la violencia y la delincuencia","Actualización jurisprudencial en materia penal","Valores éticos y jurídicos"]},"NumMaterias":2,"NumPreguntas":10}

现在您可以看到对象“Materias”中的两个属性只是数字属性,但我不能做类似的事情:

var datapoints = [];
        var data = [];
        for (i = 0; i < response.Nombres.length; i++) {
            for (j = 0; j < response.Materias.i.length; j++) {
                datapoints.push({ y: 1, label: response.Nombres[i] });
            }
        }
        for (i = 0; i < response.Materias.length; i++) {
            for (j = 0; j < response.Materias.i.length; i++) {
                data.push({
                    type: "stackedColumn",
                    legendText: response.Materias.i[j],
                    name: response.Materias.i[j],
                    showInLegend: true,
                    dataPoints: datapoints
                })
            }
        }

(正如您可能已经注意到的那样,我正在尝试格式化json响应以将其与CanvasJs一起使用,但没有运气)。 如何使用类似的for循环访问数字属性,它甚至可能吗?我试图谷歌它,但大多数引用说你应该使用for循环,但是当我这样做CanvasJs抛出一个错误说替换不是一个函数,我。即我做完了:

for (var property in response.Materias) {
                data.push({
                    type: "stackedColumn",
                    legendText: response.Materias[property],
                    name: response.Materias[property],

但这也不起作用。 我会感激任何帮助,因为我对此非常匆忙。

1 个答案:

答案 0 :(得分:0)

您不能使用数字来使用点语法访问属性。请尝试使用括号语法:

for (j = 0; j < response.Materias[i].length; j++) {
    datapoints.push({ y: 1, label: response.Nombres[i] });
}

然后在第二次循环中应用相同的处理。