如何分割字符串并重复字符?

时间:2019-09-18 06:54:45

标签: javascript arrays string

我正在尝试将array = ["A", "B", "C", "D"]转换为array = ["A", "BB", "CCC", "DDDD"]。如果比较数组,您会注意到第二个数组内的字母在每个位置上都有额外的相同字母。这是下面的代码。我使用了for循环,因为我想在for循环中使用增量。我什至不知道map()方法是否可以做到这一点,所以我使用了for循环。但是,当我检查时,它没有显示我想要的结果。我想念什么?

function accum(s) {
  // your code
  let accArray = s.toUpperCase().split("");

  for (let i = 1; i < accArray.length; i++) {
    accArray[i].repeat(i + 1);
  }

  console.log(accArray);
}
accum("abcd")

5 个答案:

答案 0 :(得分:3)

获得所需输出的更简洁的方法是使用Arrow Functions

const accum = (s) => s.toUpperCase()
                      .split("")
                      .map((s, i) => s.repeat(i + 1));
                      
console.log(accum("abcd"));

答案 1 :(得分:2)

String.prototype.repeat()

  

repeat()方法构造并 返回 ,该新字符串包含指定数量的被调用字符串的副本,并串联在一起。 / p>

您必须在特定的 index 处分配新的 返回的 值:

accArray[i] = accArray[i].repeat(i + 1);

function accum(s) {
  // your code
  let accArray = s.toUpperCase().split("");

  for (let i = 1; i < accArray.length; i++) {
    accArray[i] = accArray[i].repeat(i + 1);
  }

  console.log(accArray);
}
accum("abcd")

答案 2 :(得分:1)

您需要将值推入数组,或分配回该索引,repeat不会改变原始值,它会返回新的字符串Repeat,因此您需要将其分配回

function accum(s) {
  // your code
  let accArray = s.toUpperCase().split("");
  let op = []
  for (let i = 0; i < accArray.length; i++) {
    op.push(accArray[i].repeat(i + 1));
  }

  console.log(op);
}
accum("abcd")

答案 3 :(得分:1)

如果您的输入已经是一个数组,例如

arr = ['a', 'b', 'c', 'd']

然后您可以使用

arr.map((item, idx) => item.repeat(idx+1))

如果您有类似

的字符串
str = 'abcd'

然后您可以使用:

str.split('').map((item, idx) => item.repeat(idx+1);

答案 4 :(得分:0)

您可以同时使用forEachmap作为迭代器完美地工作

function accum(s) {
  // your code
  let accArray = s.toUpperCase().split("");
  const arr = [];
  accArray.forEach((e, index) => {
    arr.push(e.repeat(index + 1))
  })

  console.log(arr);
}
accum("abcd")