如何用这样的函数生成一个数组?如何用重复的字符串生成数组javascript
var name = ["monkey","monkey"..."horse","horse",..."dog","dog",..."cat","cat"...]
在我的实际情况,我可能需要重复每个名字100次..
如何用这样的函数生成一个数组?如何用重复的字符串生成数组javascript
var name = ["monkey","monkey"..."horse","horse",..."dog","dog",..."cat","cat"...]
在我的实际情况,我可能需要重复每个名字100次..
假设你已经有一个数组中的话试试这个代码:
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]);
}
}
你可以试试这个,指定要使用的单词,以及创建所需数组的时间。
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);
希望有所帮助!
如果我理解正确,您需要一个函数,它将一个项目集合作为参数并返回这些项目的重复集合。从你的问题陈述中,我认为重复必须由你每个收集项目进行调整 - 纠正我,如果我错了。
我写的功能就是这么做的;它需要一个对象字面值{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"]
你想根据数组产生每个单词出现一次吗? – Keammoort
'for(var i = 0; i <100; i ++){name.push('cat'); }' –