Javascript - 添加到数组中的元素不在正确的位置

问题描述 投票:0回答:1

我在将一些元素添加到数组中时遇到了一个小问题。我试图在最后一个小写字母 z 之后添加字母表的大写字母。我正在使用这个代码。我注意到在所有大写字母添加到数组中之后添加了小字符 z,并且在添加小 z 之前重复了前两个大写字母。我该如何解决这个问题?

onst splitMatrix = async (inputMatrix: string) => {
  let splitted: Array<string> = inputMatrix.split(''); 
  let index: number = splitted.indexOf("z");
  //let uppercaseChars: Array<string> = [];
  //
  index + 1;
  for (let i = 0; i < 23;i++){
    let char: string = splitted[i].toUpperCase();
    //uppercaseChars.push(char);
    splitted.splice(index + i, 0, char);
    console.log(char)
  }
  //console.log(uppercaseChars)
  //console.log(splitted)
  return splitted;
}

这就是我将得到的代码结果

[
  'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
  'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
  'u', 'w', 'x', 'y', 'A', 'B', 'C', 'D', 'E',
  'F', 'G', 'H', 'I', 'L', 'M', 'N', 'O', 'P',
  'Q', 'R', 'S', 'T', 'U', 'W', 'X', 'Y', 'A',
  'z', '0', '1', '2', '3', '4', '5', '6', '7',
  '8', '9', '@', '-', '_', '+', '*', '(', ')',
  ',', '.', '#'
]

我的想法是在字符上添加一个控件,以避免在数组中重复输入,但我愿意接受任何解决此问题的提示。谢谢你

javascript arrays typescript
1个回答
0
投票

我想这段代码会对你有所帮助。即使您的最后一个小写字母不是 Z,它也会起作用。它会找到第一个非小写字符,然后将之前的所有字符大写:

const findFirstNonLowercaseIndex = (input: string) => {
    let i = 0;
    while (i < input.length) {
        const char = input[i];
        const isLowercase = /[a-z]/.test(char);
        if (!isLowercase) return i;
        i++;
    }
    return i;
};

const splitMatrix = (input: string) => {
    const firstNonLowercaseIndex = findFirstNonLowercaseIndex(input);
    if (firstNonLowercaseIndex === -1) return;
    const previousPart = input.slice(0, firstNonLowercaseIndex);
    const restPart = input.slice(firstNonLowercaseIndex);
    const uppedPreviousPart = previousPart.toUpperCase();
    return `${previousPart}${uppedPreviousPart}${restPart}`.split("");
};

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.