使用 for 循环和数组解决一个简单的 Javascript 问题

Solving a simple Javacript question using for loop and array

我正在尝试使用 Javascript for 循环和数组来解决这个问题,但中途卡住了。需要一些指导。

到目前为止我想到的是:

const array1 = ['S','A','I','N','S'];

var text="";

for(let y = 0; y < array1.length; y++){
    text += array1[y];
    console.log(text);
}

输出为:
S
SA

赛恩
SAINS

我会使用数组作为临时数据存储。一旦你到达第一个循环的末尾,pop 关闭最后一个临时元素,这样你就不会重复“SAINS”,然后向后走循环弹出元素直到数组为空。

const arr = ['S','A','I','N','S'];
const temp = [];

// `push` a new letter on to the temp array
// log the `joined` array
for (let i = 0; i < arr.length; i++) {
  temp.push(arr[i]);
  console.log(temp.join(''));
}

// Remove the last element
temp.pop();

// Walk backwards from the end of the temp array
// to the beginning, logging the array, and then
// popping off a new element until the array is empty
for (let i = temp.length - 1; i >= 0; i--) {
  console.log(temp.join(''));
  temp.pop();
}

您可以按数组的长度 (y < array1.length * 2) 遍历数组 2 次,因为当您循环整个数组时,您必须反向循环以每次删除最后一个字符结果。您必须检查我们是否通过 y < array1.length 记录整个数组,然后使用 else 子句我们可以每次使用 slice(0 , -1) 删除最后一个字符的方法。 y < array1.length * 2 - 1 -1 用于到达文本字符串中的最后一个字符和唯一字符文本字符串中不会有任何内容,因此它将记录空字符串,这不是正确的答案。希望我能解释清楚。

const array1 = ["S", "A", "I", "N", "S"];

var text = "";

for (let y = 0; y < array1.length * 2 - 1; y++) {
  if (y < array1.length) {
    text += array1[y];
    console.log(text);
  } else {
    text = text.slice(0, -1);
    console.log(text);
  }
}