如何使用这样的函数生成数组?
var name = ["monkey","monkey"..."horse","horse",..."dog","dog",..."cat","cat"...]
在我的实际案例中,我可能需要重复每个名字100次。
答案 0 :(得分: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]);
}
}
答案 1 :(得分: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);
希望有所帮助!
答案 2 :(得分: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"]