如何使用这样的函数生成数组?
var name = ["monkey","monkey"..."horse","horse",..."dog","dog",..."cat","cat"...]在我的真实案例中,我可能不得不将每个名字重复100次。
发布于 2015-12-11 03:26:40
假设您已经在数组中包含了这些单词,请尝试以下代码:
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]);
}
}发布于 2015-12-11 03:41:38
您可以尝试这样做,指定要使用的单词和创建所需数组的时间。
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);希望这能有所帮助!
发布于 2015-12-11 04:01:46
如果我理解正确的话,您需要一个函数,该函数以项的集合为参数,并返回重复的项的集合。从您的问题陈述中,我假设重复必须由您针对每个集合项目进行调整-如果我错了,请纠正我。
我编写的函数就是这么做的;它接受一个对象字面值{name1:frequency1,name2:frequency2..},然后遍历这些键,并按照frequencyMap对象中相关频率的指示对每个键进行多次推送。
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"]https://stackoverflow.com/questions/34210039
复制相似问题