Javascript 创建给定字符串的指定副本的字符串

Javascript 创建给定字符串的指定副本的字符串,javascript,loops,push,Javascript,Loops,Push,我试图在原始字符串上迭代3次。我得到的结果是: [“a”、“b”、“c”、“d”、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义] 正确的结果应该是:[“a”、“b”、“c”、“d”、“a”、“b”、“c”、“d”、“a”、“b”、“c”、“d”] 函数生成副本(str,有多少个){ 让newCopy=[]; for(设i=0;i

我试图在原始字符串上迭代3次。我得到的结果是: [“a”、“b”、“c”、“d”、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义、未定义]

正确的结果应该是:[“a”、“b”、“c”、“d”、“a”、“b”、“c”、“d”、“a”、“b”、“c”、“d”]

函数生成副本(str,有多少个){
让newCopy=[];
for(设i=0;i

我尝试了很多变体,但都不起作用,这是我得到的最接近的一个。

Javascript为此提供了一个很好的实用程序。如果需要数组,则可以在每个字符上拆分它


console.log(“abcd”。重复(3)。拆分(“”)
您在原始字符串的边界之外进行迭代

str[i]; // i <  str.length * howmany;
str[i];//i
尝试创建两个循环:

for(let i = 0; i < howmany; i++) {
  for(let j = 0; j < str.length; j++) {
    newCopy.push(str[j])
  }
}
for(让i=0;i
当您乘以
str.length*howmount
时,数组的长度将变为12,当它超过第四个值时,它将找不到任何内容,因此变得未定义

一种解决方案是,您可以将主循环包装到另一个循环中,该循环将运行多少次

function makeCopies (str, howmany) {
   let newCopy = [];
   for (let i = 0; i < howmany; i++) {
       for(let j = 0; j <  str.length; j++) {
            newCopy.push(str[j])
        } 
    }
    return newCopy;
  }

  console.log(makeCopies("abcd", 3))
函数生成副本(str,有多少个){
让newCopy=[];
for(设i=0;i
JavaScript在字符串上有一个repeat方法。您只需使用
“abcd”。重复(3)
,您将获得“abcdabcdabcd”。如果您确实需要一个字符数组,可以使用
[…“abcd.”将字符串分散到一个数组中。重复(3)]
constmakecopies=(字符串,计数)=>新数组(计数).join(字符串).split(“”);

log(makeCopies('abcd',4))
为什么不使用
repeat()

如果需要将其作为阵列,可以:

res.split(""); // ["a", "b", "c", ...]

使用
i%str.length
可以得到0,1,2,3,0,1,2…
str.length*多少个
为16。当你到了,比如说,
i=6
你正在做的是
str[6]
。这里已经回答了:我不确定我理解了……我以为它会继续在同一个字符串中循环,就像它在数组中做的那样?谢谢。不幸的是,它没有自动循环。你问题中的
for循环
基本上是这样的:
for(让i=0;i<12;i++){
,因此循环将在数组中查找索引高于数组中可用索引的元素。谢谢,我现在明白了,太好了。不用担心,伙计。谢谢,我没有意识到这一点。
const res = "abc".repeat(3); // abcabcabc
res.split(""); // ["a", "b", "c", ...]