2015-12-10 25 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"] 
相关问题