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

How to push dynamic values into an array in jquery

本文关键字:数组 jquery 动态      更新时间:2023-09-26

这是我的数组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循环?

mname+i不会执行您认为它正在执行的操作。假设i就是2。您可能期望mname+i返回c(变量mname2的值)。相反,它实际要做的是添加mname(一个未定义的变量)+2,得到一个ReferenceError

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

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

然后这样引用它:

findDataForMonth(mname[i], month)

由于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) 在没有ready处理程序(如window.onload dom ready等)的headbody中包装以下代码,因为mname变量将是本地的,否则不可在window范围中导航。

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处理程序中使用该代码,则有两个选项。定义不带var关键字的mname变量,或者像下面这样在window.前面加上前缀。

var ARRAY = ["A","B","C","D","E"];
var mlength = ARRAY.length;
mname0 = 'a'; // or window.mname0 = 'a';
mname1 = 'b'; // or window.mname1 = 'b';
mname2 = 'c'; // etc.
mname3 = 'd';
mname4 = 'e';
for (var i = 0; i < mlength; i++) {
    alert (window['mname'+i]);
}

记住,污染全局名称空间是一种糟糕的做法,除非你真的需要。