[英]How to push dynamic values into an array in jquery
这是我的阵列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
。
您的mname0
, mname1
等变量应该是一个数组:
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)将下面的代码包装在head
或body
,而无需ready
处理程序(例如window.onload
dom ready
等),因为mname
vars将是本地的,否则不适用于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
处理程序之一中使用代码,则有2个选项。 不使用var
关键字或前置window.
定义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]);
}
请记住,除非确实需要,否则对全局名称空间进行轮询是一种不良做法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.