如何在jquery中将动态值推送到数组中

时间:2015-03-23 17:00:57

标签: javascript jquery arrays for-loop

这是我的数组ARRAY

 ARRAY = ["A","B","C","D","E"];
 var mlength = ARRAY.length;

我的变量是

 var mname0 = a, var mname1 = b, var mname2 = c, var mname3 = d, var mname4 = e

 var month = JAN;

我正在尝试根据mlength将值推送到数组。我尝试下面的代码,但这不起作用

  for (var i = 0, i < mlength; i++) {
      MARKETS[i].push(parseFloat(findDataForMonth(mname+i, month)) || null);
  }

那不行。我收到了错误

如何在for循环中推送变量?

2 个答案:

答案 0 :(得分:2)

mname+i不会按照您的想法行事。假设i2。您可能希望mname+i返回c(变量mname2的值)。相反,它实际上要做的是添加mname(未定义的变量)+ 2,给出ReferenceError

您的mname0mname1等变量应该是一个数组:

var mname = [a, b, c, d, e];

然后像这样引用它:

findDataForMonth(mname[i], month)

答案 1 :(得分:0)

由于ARRAY中的值和mname vars的值相同(只是情况不同),您可以执行以下操作。

var ARRAY = ["A","B","C","D","E"];
var mlength = ARRAY.length;
var month = JAN;
var mnames = ["a", "b", "c", "d", "e"];
//OR
//var mnames = [1, 2, 3, 4, 5];

for (var i = 0; i < mlength; i++) {
    var mname = mnames[i];
    //instead of mname+i just use mname
}

你的方式:

1)将以下代码包含在headbody中,没有ready处理程序(例如window.onload dom ready等){{1 } vars将是本地的,否则在mname范围内不可用。

window

2)如果要在其中一个var ARRAY = ["A","B","C","D","E"]; var mlength = ARRAY.length; var mname0 = 'a'; var mname1 = 'b'; var mname2 = 'c'; var mname3 = 'd'; var mname4 = 'e'; for (var i = 0; i < mlength; i++) { alert (window['mname'+i]); } 处理程序中使用代码,则有2个选项。您可以定义ready变量,不使用mname关键字,也可以在var之前添加{。}}。

window.

请记住,污染全局命名空间是一种不好的做法,除非你真的需要。