簡體   English   中英

將數組值替換為循環以創建新數組

[英]Substitute array values into a loop to create new arrays

我不太用JavaScript編程,所以請隨時告訴我這是否是一個瘋狂的主意。

我想從數組中獲取值並從這些值中構建數組。 例如,使用下面的“ people”數組,我想創建空數組“ jack_test”,“ john_test”,“ mary_test”等。

var people = ["jack","john","mary"];


 for (var i = 0; i < people.length; i++){
  //I'd like to execute code here that would create new arrays like jack_test = [], john_test= [], etc.
 }

更新:可憐的問題,對此表示抱歉。 我真的是一個初學者,所以請多多包涵。 讓我們嘗試一些不同的情況(很抱歉,如果它偏離了原始問題太多):

說我有一個像“人”這樣的數組,盡管實際上,它會更長。 然后我有另一個數組具有關聯的體重,即

var weights = [150,180,120]    

對於每個人,我想在數組“ weights”中獲取其初始權重,並向其添加一些常量以形成變量(或@Pointy指出,形成屬性名稱)“ jack_weight”,“ john_weight”等。

如果我記錯了,並且有更有效的方法,請告訴我。

您不能在JavaScript *中 “構造”變量名稱,但是可以構造對象屬性名稱。

var people = ["jack","john","mary"], tests = {};


 for (var i = 0; i < people.length; i++){
  //I'd would like to execute code here that would create new arrays like jack_test = [], john_test= [], etc.
  tests[people[i]] = "something";
 }

這將使用從數組中獲取的名稱來創建“ tests”對象的屬性。 此外,如果要執行諸如在名稱中添加前綴的操作, people[i]可以是任何表達式。

*是的,我知道,有eval() edit和globals,它們是對象的屬性,因此是上述示例的一種特殊情況,除了附加的危險(“特殊”全局符號等)外。

您不能完全復制var jack_test = [] ,它是局部范圍的,但是您可以通過window對象在全局范圍內或在任何其他對象內部進行局部范圍的復制。

var people = ["jack","john","mary"];
for (var i = 0; i < people.length; i++) {
  // assigns the property globally
  window[people[i]+'_test'] = []; 
}
console.log(jack_test); // []

之所以可行,是因為在全局范圍內(即,在任何函數之外),將諸如var x = 'whatever'類的變量分配給window,因此它們是同義詞:

var x = 'whatever';
window.x = 'whatever';

除了使用window ,還可以使用相同的方法將屬性動態分配給任何對象。

var myObj = {};
var myProp = 'foo';
myObj[myProp] = 'foo value';
console.log(myObj.foo); // 'foo value'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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