簡體   English   中英

如何通過循環函數將N個數組的所有數組變量推入一個數組中?

[英]How can I push all array variables of N arrays in just one array over an loop function?

我有一個問題要弄清楚如何用JavaScript編寫代碼:

  1. 我有很多數組-> 1到N個這樣的數組

     let array_0 = ["a","b","f"]; let array_1 = ["c","b","g","r"]; let array_2 = ["a","b","f","2","43"]; ..to N.. let array_N = ["a","a","s","d"]; 
  2. 接下來,我需要像這樣的一個數組中的所有變量:

     let array_fin = ["a","b","f","c","b","g","r","a","b","f","2","43","a","a","s","d"]; or over the console.log() -> 0: ["a","b","f","c","b","g","r","a","b","f","2","43","a","a","s","d"]; 

但是遍歷了所有array_N的循環函數

我試圖通過map()函數做到這一點,但是map函數給了我這樣的數組:

0: ["a","b","f"]
1: ["c","b","g","r"]
2: ["a","b","f","2","43"]
..
N

但這不是我所需要的,我無法弄清楚哪個命令可以做到這一點。 我也嘗試了類似push()的函數,但是我不知道如何通過循環函數調用它來處理N個數組。

只需使用concat()合並所有數組,如下所示:

  let array_0 = ["a","b","f"]; let array_1 = ["c","b","g","r"]; let array_2 = ["a","b","f","2","43"]; let array_N = ["a","a","s","d"]; let array_fin = array_0.concat(array_1, array_2, array_N); console.log(array_fin); 

如果您不想全部輸入它們,只需使用var使其成為全局變量,然后使用擴展語法...array_Nwhile -loop ...array_N將它們...array_N

 var array_0 = ["a","b","f"]; var array_1 = ["c","b","g","r"]; var array_2 = ["a","b","f","2","43"]; var array_3 = ["a","a","s","d"]; let result_array = []; let i = -1; while (window[`array_${++i}`] instanceof Array) { result_array = [...result_array, ...window[`array_${i}`]]; } console.log(result_array); 

是的,這也適用於1500多個陣列:)

您可以訪問window對象,以便訪問全局變量(即數組)並進行循環以將它們連接起來,如下例所示:

 var array_0 = ["a","b","f"]; var array_1 = ["c","b","g","r"]; var array_2 = ["a","b","f","2","43"]; var array_3 = ["a","a","s","d"]; // Create the array of all arrays. let numOfArrays = 4; var array_all = []; for (i = 0; i < numOfArrays; i++) { array_all = array_all.concat(window['array_' + i]); } console.log(array_all); 

使用Array#filtereval的解決方案。 不建議使用,因為eval存在安全問題。 僅出於知道這也是可能的。

 let array_0 = ["a","b","f"]; let array_1 = ["c","b","g","r"]; let array_2 = ["a","b","f","2","43"]; const res = []; for(let i = 0;;i++){ try { const arr = eval(`array_${i}`); res.push(...arr.filter(a=>!res.includes(a))); } catch(e){ console.log(e.message); break; } } console.log(res); 

為什么不使用eval

暫無
暫無

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

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