簡體   English   中英

如何在for循環中初始化數組?

[英]How to initialise an array in a for-loop?

我想創建一個像這樣的數組。

itemList = ['1', '2', '3', '4', '5', '6', '7']

但是我的代碼輸出是

itemList = ['1,2,3,4,5,6,7']

 var numberList = []; export default class App extends Component<{}> { constructor(props) { super(props); for (let i = 1; i < 8; i++){ numberList.push(i); } numberList = numberList.toString(); this.state = { selectedItem : 2, itemList: [numberList] }; } 

numberList = numberList.toString(); 將整個數組變成一個字符串。 然后使用itemList: [numberList]創建一個包含該字符串作為一個元素的新數組。

要解決這個問題:

  • 在for循環中的每個值上使用toString() ,而不要在實際數組上使用。
  • 同時從itemList: [numberList]刪除括號。 它應該是itemList: numberList

 var numberList = []; for (let i = 1; i < 8; i++){ numberList.push(i.toString()); } console.log(numberList); 

在代碼中發生的是構造數組:

[1,2,3,4,5,6,7]

然后調用toString 在數組上調用toString會將整個數組轉換為字符串,而不是將數組的每個元素轉換為字符串。 因此,當您在1-> 8上迭代時,您想在每個元素上調用String構造函數。固定代碼如下所示。

注:不知道這部分的最終目標是,但可能也想改變selectedItemthis.state 2 - >“2”,因為我想象它映射到的元素itemList這是類型的String ,而不是現在Number

 var numberList = []; export default class App extends Component<{}> { constructor(props) { super(props); for (let i = 1; i < 8; i++){ numberList.push(String(i)); } this.state = { selectedItem : 2, itemList: numberList }; } } 

//以下內容會將整個數組轉換為字符串,請避免// // numberList = numberList.toString();

 var numberList = []; for (let i = 1; i < 8; i++){ numberList.push(i.toString()); } export default class App extends Component<{}> { constructor(props) { super(props); this.state = { selectedItem : 2, itemList: numberList }; } 

有一種方法可以使用new Array上的散布來進行無循環操作並將其map為值:

 /** * Creates an array from start to end where start is a number smaller than end * It takes an optional parameter called step that defaults to 1 * usage example: * range(5,9);// [5, 6, 7, 8, 9] * range(5,9,1.5);// [5, 6.5, 8] */ const range = (start,end,step=1)=>{ const min = start-step return [...new Array(Math.floor((end-min)/step))].map( (val,index)=>min+(step*(index+1)) ); }; console.log(range(5,9)); console.log(range(5,9,1.5)); 

暫無
暫無

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

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