Javascript 尝试使用大小写字符串,为什么我的字母不更新为大写?

Javascript 尝试使用大小写字符串,为什么我的字母不更新为大写?,javascript,algorithm,Javascript,Algorithm,我的步骤是将字符串放入一个数组中,然后循环在下面的索引中查找空格和大写字母,然后如果语句完成,我想将所有不是空格的字符推到一个新数组中并联接,但我的大写字母没有显示在最后的数组中 var camelCase=functionstr{ console.logstr 让我们一起去吧; 设finalStr=[]; 让camelCase=str.toLowerCase.split; 对于let i=0;i

我的步骤是将字符串放入一个数组中,然后循环在下面的索引中查找空格和大写字母,然后如果语句完成,我想将所有不是空格的字符推到一个新数组中并联接,但我的大写字母没有显示在最后的数组中

var camelCase=functionstr{ console.logstr 让我们一起去吧; 设finalStr=[]; 让camelCase=str.toLowerCase.split; 对于let i=0;iCamelcase现在是时候求助了正如其他人在评论中指出的那样,你没有对upCased做任何事情。第二,当遇到空格时,你应该将i增加1——现在即使你节省了大写字母,小的i也会出现在它旁边。 如果其他条件足够的话,你不需要最后一个。最后应该是:

var camelCase=functionstr{ console.logstr 让我们一起去吧; 设finalStr=[]; 让camelCase=str.toLowerCase.split; 让字母=; forlet i=0;i要提供一种不太复杂的不同类型的解决方案,可以在空格处拆分字符串,使用map对其进行迭代:

在第一个索引上,返回小写单词 在所有其他索引上,返回大写的第一个字母,并将其连接到单词其余部分的子字符串。 如下所示:

var camelCase=functionstr{ 返回str.split'.mapv,i=>{ 返回i>0?v[0]。toUpperCase+v.substring1,v.length.toLowerCase:v.toLowerCase; }.加入; };
console.log这是一个测试字符串;//ThisisTestingString这是一个reduce版本

var camelCase=str=>str .toLowerCase .split/\s+/.reduce acc,word,i=>{ acc.pushi==0?单词:word.slice0,1.toUpperCase+word.slice1; 返回acc; },[]加入 console.log 现在是援助的时候了
这里是另一种形式,ES6使用箭头函数和链接方法调用。首先将字符串拆分为单词,将每个单词大写,然后再次合并为字符串:

大写=x=>x.charAt0.toUpperCase+x.slice1 toCamelCase=w=>w.toLowerCase .拆分“ .mapx,i=>i==0?x:x 参加
logtoCamelCase'this is nice'分配给upCased后,您不会对其执行任何操作,因为它的字符串是按值复制的,因此touppercase对camelCase数组没有影响。camelCase[I+1]=upCase将为您提供正确的行为正如前面提到的升级问题一样,您将在foo栏中处理b两次:一次是在索引3处的空格处,另一次是在索引4处的b处,生成fooBbar,这可能不是您想要的。正如注释和答案所示,如何修复代码,请注意简单的一行代码,const camelCase=s=>s.replace/\s+\s/g,a,s=>s.toUpperCase。谢谢您的回复!我试图使用基本的Javascript,但没有花哨的函数,但如果我是的话,这是一个很好的答案。.地图不是很花哨!在它的核心,它只是另一个迭代控制器。我+1是另一个被接受的答案,因为正如你提到的,它修复了你现有的代码,并用注释说明了必要的更改。我只是想展示另一种完全不同的方法,很少有一种方法可以用任何一种语言做事情!。我已经回答了一半了,但是他们抢先给了我答案,所以我不想让答案悬而未决,所以我想出了一个不同的解决方案。干杯