使用 splice 方法向数组中插入多个元素
Insert multiple elements into array with splice method
我有一个问题要解决。我试图在有大写字母实例的地方插入 space 。问题是 space 被推入了正确的索引,但对于出现大写字母的所有其他情况,它并不适用 space。我对拼接方法进行了广泛的研究,但无法找到解决我的问题的方法。有人能给我指出正确的方向吗?
function solution(string) {
let splitStr = [...string];
for(let i = 0; i < splitStr.length; i++) {
if(!splitStr[i].toUpperCase()) return
if(splitStr[i] === splitStr[i].toUpperCase()) {
let indexOfCapLetter = splitStr.indexOf(splitStr[i].toUpperCase());
splitStr.splice(indexOfCapLetter, 0, ' ' );
return splitStr
}
}
}
第一个问题是您要在循环中的 if 语句中返回数组。这会在第一个大写字母后转义函数。但是之后还有一个问题。
每当你向数组中添加一个新元素时,它后面的字符都会移动到更高的索引。
为了解决这个问题,您可以向后遍历数组,以便受影响的元素始终是您已经解析过的元素:
function solution(string) {
let splitStr = [...string];
for(let i = splitStr.length-1; i >=0; i--) {
if(splitStr[i] === splitStr[i].toUpperCase()) {
splitStr.splice(i, 0, ' ' );
}
}
return splitStr.join('');
}
console.log(solution('HelloWorldLongString'))
我有一个问题要解决。我试图在有大写字母实例的地方插入 space 。问题是 space 被推入了正确的索引,但对于出现大写字母的所有其他情况,它并不适用 space。我对拼接方法进行了广泛的研究,但无法找到解决我的问题的方法。有人能给我指出正确的方向吗?
function solution(string) {
let splitStr = [...string];
for(let i = 0; i < splitStr.length; i++) {
if(!splitStr[i].toUpperCase()) return
if(splitStr[i] === splitStr[i].toUpperCase()) {
let indexOfCapLetter = splitStr.indexOf(splitStr[i].toUpperCase());
splitStr.splice(indexOfCapLetter, 0, ' ' );
return splitStr
}
}
}
第一个问题是您要在循环中的 if 语句中返回数组。这会在第一个大写字母后转义函数。但是之后还有一个问题。
每当你向数组中添加一个新元素时,它后面的字符都会移动到更高的索引。
为了解决这个问题,您可以向后遍历数组,以便受影响的元素始终是您已经解析过的元素:
function solution(string) {
let splitStr = [...string];
for(let i = splitStr.length-1; i >=0; i--) {
if(splitStr[i] === splitStr[i].toUpperCase()) {
splitStr.splice(i, 0, ' ' );
}
}
return splitStr.join('');
}
console.log(solution('HelloWorldLongString'))