我正在做一个练习(自学),其中必须有一个数组,该数组的字符串要插入n次。
我有这个
var splitTxt = [];
for(i=0 ; i<n ; i++)
{
splitTxt += text.split('');
}
text
是函数中给定的字符串。我环顾四周,但只见到有关如何在数组末尾添加字符和其他字符串等的建议。
添加split通常会产生所需的结果,但是,当这样循环时,我在数组的每个索引中都得到一个逗号。这是怎么回事,我该怎么做?
我可以这样做:
for(i=0 ; i<n ; i++)
{
splitTxt.push(text.split(''));
}
但这会产生嵌套数组,这是不希望的。
我也可以这样做:
var secondChar = [].concat(...Array(n).fill(text.split('')));
但是,还是嵌套数组。不过,我很喜欢这一点,使用数组构造函数将其弄乱了,非常聪明。 @CertainPerformance here
给出的答案编辑:对不起,我还不够清楚。我想多次将其拆分为数组:
var text = "hello there!";
n = 3;
desired result: ["h","e","l","l","o"," ","t","h","e","r","e","!","h","e","l","l","o"," ","t","h","e","r","e","!","h","e","l","l","o"," ","t","h","e","r","e","!"]
答案 0 :(得分:2)
看到您进行编辑后,最简单的方法就可以在一行中完成:
console.log('hello there!'.repeat(3).split(''));
答案 1 :(得分:1)
想看看我是否可以在不使用重复和拆分的情况下做到这一点,这就是我的想法。
function mapx(text, x) {
var myArray = [];
for (var y = 0; y < x; y++) {
myArray = myArray.concat(Array.prototype.map.call(text, i => i));
}
return myArray;
}
var result = mapx('hello there!', 3);
console.log(result);
浏览器完全支持
array.map和array.concat。您可以使用.split代替.map-实际上,我相信拆分基准测试要比在小型数组中映射更快。当物体变大时,地图会占优势。
答案 2 :(得分:0)
根据您的示例,只需重复文本n
次,然后将其拆分:
function splitText(text, n) {
return text.repeat(n).split('');
}
var result = splitText('hello there!', 3);
console.log(result);
请记住,旧版浏览器不支持String.prototype.repeat,但是可以很容易地对其进行填充。