簡體   English   中英

如何在jQuery中將動態值推入數組

[英]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

您的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)將下面的代碼包裝在headbody ,而無需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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM