使用Java在JavaScript中创建对象数组

时间:2016-05-06 15:22:51

标签: javascript arrays jsp el

我试图使用以下方法创建一个对象数组:

var tax_data = new Array();
for (var i =0; i < ${Dates.size()}; i++) {
    tax_data.push({
        "period": "${Dates[i]}", 
        "Poids": ${WeightMesures[Dates[i]]}, 
        "Nombre de pas": ${WalkingMesures[Dates[i]]}, 
        "Pulsation": ${BpMesures[Dates[i]]} 
    });
}

但这不起作用。

是否有其他方法可以将元素放入此数组中?

4 个答案:

答案 0 :(得分:2)

您似乎正在混合使用JavaScript进行迭代并在模板引擎中进行迭代。从${Dates[i]}开始,您希望i成为模板中的变量,但您已在生成的JavaScript中将其声明为变量。

像(未经测试的)

var tax_data = new Array();
<c:forEach begin="1" end="Dates.size()" var="i">
tax_data.push({"period": "${Dates[i]}", "Poids": ${WeightMesures[Dates[i]]}, "Nombre de pas": ${WalkingMesures[Dates[i]]}, "Pulsation": ${BpMesures[Dates[i]]} }) ;
</c:forEach>

应该为JavaScript中的每个日期生成一行

var tax_data = new Array();
tax_data.push({"period": "2014-01-01", "Poids": 32, ... }) ;
tax_data.push({"period": "2014-02-01", "Poids": 32, ... }) ;
tax_data.push({"period": "2014-02-01", "Poids": 32, ... }) ;

没有一种简单的方法可以让生成的JavaScript引用然后使用Dates表而不直接写出它的每一行,或者响应单独的ajax请求。

答案 1 :(得分:0)

首先将数据传递给JavaScript变量,然后使用本地变量运行循环:

var taxData = [],
index = 0,
dates = ${Dates},
weightMesures = ${WeightMesures},
walkingMesures = ${WalkingMesures},
bpMesures = ${BpMesures},
length = dates.length();

for (index; index < length}; index += 1) {
    taxData.push({
        "period": dates[i],
        "Poids": weightMesures[dates[i]],
        "Nombre de pas": walkingMesures[dates[i]],
        "Pulsation": bpMesures[dates[i]]
    });
}

答案 2 :(得分:0)

我同意皮特的意见 我建议你在vanilla中创建一个Json数组并再次编写vanilla以在循环中检索属性 因此,您将检查它是否适用于JavaScript 将JSP(或其他模板语言)与客户端JavaScript混合是一种糟糕的模式。您宁愿让servlet将Json Array推向客户端页面,然后使用纯JavaScript解析Json

答案 3 :(得分:-1)

尝试这个假设你想循环通过Dates.size

var tax_data = [];
    for (var i =0 ;i< ${Dates.size()}; i++) {

        tax_data.push({"period": "${Dates[i]}", "Poids": ${WeightMesures[Dates[i]]}, "Nombre de pas": ${WalkingMesures[Dates[i]]}, "Pulsation": ${BpMesures[Dates[i]]} }) ;

        }