说我有一个数组:
var newArray = [];
我可以像这样添加字符串:
var thisString = 'watch';
newArray.push(thisString);
我想做的是有一个此字符串的数组。因此,例如,我希望newArray具有这些'thisString'中的50个。
我可以通过循环轻松地做到这一点:
for(var i=0;i<50;i++){
newArray.push(thisString);
}
但是,如果我有3个字符串:
var firstString = 'first', secondString = 'second', thirdString = 'third';
我想将第三次推送30次,第二次40次和第三次50次,这是通过上面的循环执行此操作的唯一方法吗?还是我可以说
newArray.push(firstString * 50); //obviously not correct javascript (psuedo code)
我想这样做,因为在我的项目中,我可能有超过10个字符串。我知道这是为循环建立的,但是我想知道是否有更简单的方法可以做到这一点。
可以使用JQuery。
要获得重复元素的数组,可以使用以下方法:
var count = 3;
var sizedArray = Array.apply(null, Array(count));
这将返回以下内容:
[undefined, undefined, undefined]
接下来,您可以map
用来投影预期值,有效地为您提供重复值的数组count
:
var value = 'hello';
var result = sizedArray.map(function(o) {
return value;
});
// ['hello', 'hello', 'hello']
综上所述,您的请求可以通过以下方式解决:
function generateArray(value, size) {
var sizedArray = Array.apply(null, Array(size));
var result = sizedArray.map(function() {
return value;
});
return result;
}
var firstArray = generateArray('first', 5);
var secondArray = generateArray('second', 10);
var thirdArray = generateArray('third', 15);
var result = firstArray.concat(secondArray).concat(thirdArray);
console.log(result);
这种方法适用于任何字符串,甚至包括逗号,因为我们没有采用类似于注释中解决方案的逗号分隔方法,该方法仅适用于有限的一组输入。
JSBin:演示链接
或者,如果您使用的是LoDash,则可以使用该_.range
方法在map
on上生成一个数组,以代替Array.apply
上面的用法:
var range = _.range(4);
// [0, 1, 2, 3]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句