使用 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'))