2017-05-29 77 views
0

根據輸入,函數應該返回從'開始'到'結束'的'num'元素數組。 'type'參數決定它們是整數('1')還是浮點('0')。 首先創建一個'num'長度的新數組,然後有一個switch語句來確定它是否應該是整數或生成的十進制數。 我似乎遇到了返回它們的問題。生成隨機數的函數,我從Mozilla的開發者網站獲取。整個想法將會反饋在React Native的行動創造者身上,但我認爲這不是相關的。JavaScript - 開關條件返回數組

export const genNum = (start, end, num, type) => { 
    let numberArray = new Array(num); 

    switch (type) { 
    case 1: 
     return numberArray.map(function(num) { 
     let min = Math.ceil(start); 
     let max = Math.floor(end); 
     return Math.floor(Math.random() * (max - min)) + min; 
     }); 
    default: 
     return numberArray.map(function(num) { 
     return Math.floor(Math.random() * (max - min)) + min; 
    }); 
    } 
}; 

編輯: 我不認爲這是一個重複的,因爲它試圖兩種情況結合起來。我仍然閱讀reduce()來擺脫不必要的switch語句。我已經接受你的更正。目前看起來如下(我仍然需要將浮點數舍入爲2dp)。

export const genNum = (start, end, num, type) => { 
    let numberArray = new Array(num).fill(-1); 

    switch (type) { 
    case 1: 
     return numberArray.map(function(num) { 
     let min = Math.ceil(start); 
     let max = Math.floor(end); 
     return Math.floor(Math.random() * (max - min)) + min; 
     }); 
    default: 
     return numberArray.map(function(num) { 
     let min = start; 
     let max = end; 
     return (Math.random() * (max - min)) + min; 
    }); 
    } 
}; 
+2

你是什麼意思,有問題返回它們?當我讀取你的代碼時,它好像返回數組就好了,但它是一個沒有條目的數組,所以'map'不會執行任何操作(map對每個條目運行一次回調,但是當你的數組沒有這意味着回調永遠不會運行)。最終的結果是返回長度等於'num'且沒有條目的數組。 – Paulpro

+0

這看起來像是一個非常複雜的'reduce()'。爲什麼你需要一個'switch'和'map()'的重複? – charlietfl

+0

[在特定範圍內的JavaScript中生成隨機整數?]的可能重複(https://stackoverflow.com/questions/1527803/generating-random-whole-numbers-in-javascript-in-a-specific-range) – num8er

回答

-1

0(默認)情況沒有定義最小和最大值,可能返回全零。另外如果你想要浮點數,你不需要Math.floor。

編輯:因爲你可能不會初始化數組,而不是魔術,你可能想使用一個老式的循環,實際上從0到num-1計數。

+0

如果map()永遠不會遍歷空插槽陣列...更不用說交換機是多餘的 – charlietfl

+0

感謝downvotes,我正在處理它無法生成數字的事實。 – tevemadar

+0

@charlietfl是的,我編輯。但是,由於第二種情況不應該使用地板,交換機不是多餘的。 – tevemadar

2

如果您正確初始化陣列,一些問題將得到解決。您不能映射在您創建的數組上,因爲它並不包含任何值。我建議你改變定義您的陣列的行:

let numberArray = Array(num).fill(-1); 

然後就可以在代碼(例如,最小和最大未在第二種情況下塊中定義的解決一些其他的問題,和浮點部分不工作,因爲你將他們四捨五入到整數)