2015-12-10 37 views
0

如何用這樣的函數生成一個數組?如何用重複的字符串生成數組javascript

var name = ["monkey","monkey"..."horse","horse",..."dog","dog",..."cat","cat"...]​ 

在我的實際情況,我可能需要重複每個名字100次..

+0

你想根據數組產生每個單詞出現一次嗎? – Keammoort

+0

'for(var i = 0; i <100; i ++){name.push('cat'); }' –

回答

2

假設你已經有一個數組中的話試試這個代碼:

var words = ["monkey", "hourse", "dog", "cat"]; 
var repeatWords = []; 
for(var i = 0; i < words.length; i++) 
{ 
    for(var j = 0; j < 100; j++) 
    { 
    repeatWords.push(words[i]); 
    } 
} 
0

你可以試試這個,指定要使用的單詞,以及創建所需數組的時間。

var neededWords = ["Cat", "Hourse", "Dog"]; 
    var finalArray = []; 
    var times = 10; 
    for (var i = 0; i < neededWords.length; i++) { 
     for (var n = 0; n < times; n++) { 
      finalArray.push(neededWords[i]); 
      } 
    } 
    console.log(finalArray); 

希望有所幫助!

0

如果我理解正確,您需要一個函數,它將一個項目集合作爲參數並返回這些項目的重複集合。從你的問題陳述中,我認爲重複必須由你每個收集項目進行調整 - 糾正我,如果我錯了。

我寫的功能就是這麼做的;它需要一個對象字面值{name1:frequency1,name2:frequency2..},然後對該鍵進行迭代,並按照頻率映射對象中的關聯頻率所指示的次數推送每一個。

function getRepeatedNames(frequencyMap) { 
    var namesCollection = []; 
    Object.keys(frequencyMap).forEach(function(name,i,names){ 
    var freq = frequencyMap[name]; 
    freq = (isFinite(freq)) ? Math.abs(Math.floor(freq)) : 1; 
    for (var nameCounter=0; nameCounter<freq; nameCounter++) { 
     namesCollection.push(name); 
    } 
    }); 
    return namesCollection; 
} 

頻率地圖非數字值被忽略,取而代之的是1

用法舉例:如果我們想用5只貓和3只狗創建一個數組,我們需要調用

getRepeatedNames({cat: 2, dog: 3}); // ["cat","cat","dog","dog","dog"] 
相關問題