【发布时间】:2020-01-19 01:15:57
【问题描述】:
我正在尝试将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")
【问题讨论】:
-
字符串(和所有原语)是不可变的。对于
repeat和replace等字符串特殊方法,返回一个new字符串,修改后的值,原字符串保持不变。 -
@VLAZ 哦,对了!我完全忘记了
repeat返回一个新字符串。谢谢提醒! -
@VLAZ 为什么将我的问题标记为重复?我看了另一个问题,它没有回答我的问题。另一个问题是关于 substr() 方法,而我在询问 repeat() 方法和 map() 方法。
-
字符串是不可变的。任何“更改”字符串的方法实际上都会返回一个新字符串 -
repeat、replace、substr、slice、toUpperCase等等。这些都不会改变调用它们的字符串 - 当答案相同时,无需为这些方法中的每一个写相同的答案 - 你必须调用该方法并在某处分配值。 -
@VLAZ 确实字符串是不可变的。但是,另一个问题主要是在谈论解决方案和使用 substr()、slice() 等。实际上,另一个问题是一个广泛的问题。您提到的报价只是最佳解决方案中的一段。我的问题很具体,仅限于 map() 和 repeat() 方法。这就是与其他问题的不同之处。
标签: javascript arrays string