我编写了一个在大写字母前插入'-'的代码
render() {
const project = () => {
switch(this.projectName) {
case "one": return <ComponentA />;
case "two": return <ComponentB />;
case "three": return <ComponentC />;
case "four": return <ComponentD />;
default: return <h1>No project match</h1>
}
}
return (
<div>{ project() }</div>
)
}
但是有一件事让我非常好奇。在拼接部分,当我将数字从1更改为0
const caseSwitch = (str) => {
let strArr = [...str];
for(let i = 0; i < strArr.length; i++) {
if(strArr[i] === strArr[i].toUpperCase()) {
strArr.splice(i, 1, '-' + strArr[i]);
}
} return strArr.join('')
}
caseSwitch('camelCaseSnakeCase'); // 'camel-Case-Snake-Case'
警告标志“ RangeError:潜在的无限循环”。弹出。
但是当我使用0时,在另一个拼接方法中,在两个偶数之间插入“-”:
strArr.splice(i, 0, '-' + strArr[i]);
它工作正常。但是不知道为什么两个相同的方法在两个代码中的作用不同。
答案 0 :(得分:0)
容易得多,匹配所有大写字母并将其替换为带有-前缀的自身。
const caseSwitch = (str) => str.replace(/([A-Z])/g, "-$1");
console.log(caseSwitch('camelCaseSnakeCase'));