如何使用do while循环将字符串多次推入数组?

时间:2019-06-18 08:44:05

标签: javascript arrays loops while-loop do-while

我非常亲密...我想。尝试使用do while循环推送“我爱甲壳虫乐队!”进入数组(n)的次数,包括输入的任何数字的0。

在函数中添加一个do-while循环,添加“我爱甲壳虫!”到空数组。

然后,循环应增加作为参数传递的数字。循环的条件应检查以确保参数号小于15。它应包含多个字符串,这些字符串表示输入数字与15之间的差。

使用字符串“ I love the Beatles!”返回数组。

我已经尝试了本课程到目前为止所学的内容。任何解释将不胜感激!

function iLoveTheBeatles(n) {
  let newArray = [];
  let LoveBeatles = newArray.push("I love the Beatles!");

  do {
    LoveBeatles;
    return newArray;
  } while (n < 15);

  if (n > 15)
    newArray.push(LoveBeatles);

  return newArray;
}
1) Beatles Loops iLoveTheBeatles returns an 
array of 'I love the Beatles!' 8 times 
when passed the parameter 7 :

Error: Expected [ 'I love the Beatles!' ] 
to equal 
[ 'I love the Beatles!', 'I love the Beatles!', 
'I love the Beatles!', 'I love the Beatles!', 
'I love the Beatles!', 'I love the Beatles!', 
'I love the Beatles!', 'I love the Beatles!' ]

4 个答案:

答案 0 :(得分:2)

似乎您要尝试将字符串n次推入数组,并作为函数调用的结果返回此数组。一个do-while循环不是一个好的解决方案,因为如果将0传递给该函数,它将返回一个空数组,对吗?但是一个do-while循环至少要迭代一次,直到“ while”检查完成。这就是它与while循环的不同之处。因此,请尝试以下方法:

function iLoveTheBeatles(n) {
    let loveTheBeatlesNTimes = [];
    let target = Math.sqrt(Math.pow(n - 15, 2))

    if (target > 0) {
        do {
            loveTheBeatlesNTimes.push('I Love The Beatles')
        } while (--target > 0)
    }

    return loveTheBeatlesNTimes;
}

console.log(iLoveTheBeatles(10)) // should output 5 times
console.log('----------')
console.log(iLoveTheBeatles(17)) // should output 2 times

答案 1 :(得分:1)

只需使LoveBeatles为一个函数。您还需要从函数的末尾return开始,并递增n,以避免无限循环。

function iLoveTheBeatles(n) {
  let newArray = [];
  let LoveBeatles = () => newArray.push("I love the Beatles!");
  do {
    LoveBeatles();
    n++;
  } while (n < 15);
  if (n > 15) LoveBeatles();
  return newArray;
}

const res = iLoveTheBeatles(7);

console.log(res);
console.log(res.length);
.as-console-wrapper { max-height: 100% !important; top: auto; }

答案 2 :(得分:0)

通过按您的方式定义LoveBeatles,您已经将字符串"I love the Beatles"推到了新数组上。我很确定,您不打算这样做。

如果仅希望将所需的字符串n压入一个数组,则有多个选项。最原生的是for循环:

function iLoveTheBeatles(n) {
  const newArray = [];
  // throw error for invalid n
  if (n < 0) {
    throw new Error("Input value n is negative");
  }
  for (let i = 0; i < n; i++) {
    newArray.push('I love the Beatles!');
  }
  return newArray;
}

while循环解决方案可能看起来像这样:

function iLoveTheBeatles(n) {
  const newArray = [];
  // throw error for invalid n
  if (n < 0) {
    throw new Error("Input value n is negative");
  }
  while (newArray.length < n) {
    newArray.push('I love the Beatles!');
  }
  return newArray;
}

答案 3 :(得分:0)

您可以使用reapet来使文本多行,然后使用特殊字符split~,最后删除最后一个值:

var text = "I love the Beatles!~".repeat(4).split('~');
text.pop(); // remove last empty value
console.log(text)