我正在尝试将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")
答案 0 :(得分:3)
获得所需输出的更简洁的方法是使用Arrow Functions
:
const accum = (s) => s.toUpperCase()
.split("")
.map((s, i) => s.repeat(i + 1));
console.log(accum("abcd"));
答案 1 :(得分:2)
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)
您可以同时使用forEach
或map
作为迭代器完美地工作
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")