这个数组应该大写字符串中每个单词的第一个字母。我一直收到错误:" TypeError:array [i]未定义"。
function LetterCapitalize(str) {
var array = str.split(" ");
for(var i = 0; i<=array.length;i++){
var secondArray = array[i].split();
secondArray[0]=secondArray[0].toUpperCase();
secondArray=secondArray.join();
array[i] = secondArray
}
return array;
}
答案 0 :(得分:9)
问题是你的for循环运行时间过长。在您的情况下将<=
更改为<
:
for(var i = 0; i < array.length; i++) {
...
}
此外,作为Mehdi points out,如果您想要按每个字符使用array[i].split('');
拆分字符串,并将它们重新连接在一起时,请使用secondArray.join('');
。如果你修复了所有这些,该函数仍将返回一个数组。如果您想让它返回一个字符串,请使用return array.join(' ')
。
但您可能需要考虑使用正则表达式替换:
function LetterCapitalize(str) {
return str.replace(/\b\w/g, function(c) { return c.toUpperCase(); });
}
答案 1 :(得分:2)
试试这个:只需把&lt;符号,NOT =,因为你会再重复一次。
使用&lt; ,不是&lt; =
i ++增加i超过数组长度,因此错误。
function LetterCapitalize(str) {
var array = str.split(" ");
for(var i = 0; i<array.length;i++){
var secondArray = array[i].split();
secondArray[0]=secondArray[0].toUpperCase();
secondArray=secondArray.join();
array[i] = secondArray
}
return array;
}
答案 2 :(得分:1)
如果我向您的函数发送一个简单的对象会怎样?喜欢 {}?
- 有一件事,你必须确保在把它当作字符串处理之前收到一个字符串......
- 另外,在循环之外声明你的var“secondArray”,你不需要每次都创建它......
- 再次,而不是像这样使用“for”:“for(var i = 0; i&lt; = array.length; i ++)”,使用它如下:“for(var i = 0,count = array.length;我&lt; =计数; i ++)“,好吗?
function LetterCapitalize(str) {
var array = str.split(" ");
for(var i = 0; i<=array.length;i++){
var secondArray = array[i].split();
secondArray[0]=secondArray[0].toUpperCase();
secondArray=secondArray.join();
array[i] = secondArray
}
return array;
}
答案 3 :(得分:0)
我做了一些改动,不仅仅是大写,第一个字母。这取决于你。
function letterCapitalize(str) {
var array = str.split(" "), aux, arr = [];
for(var i = 0, count = array.length; i<count; i++){
aux = array[i];
aux = aux.substring(0,1).toUpperCase() + aux.substring(1).toLowerCase();
arr.push(aux);
}
return arr;
}
console.log(letterCapitalize('hEllo WOrld'));//["Hello", "World"];
答案 4 :(得分:0)
//A slightly different "vanilla" version
function letterCapitalize (str) {
var array = str.split('');
for (var i = 0; i <= array.length;) {
if (array[i - 1] == " ") {
array[i] = array[i].toUpperCase();
} else if (i == 0) {
array[i] = array[i].toUpperCase();
}
i++;
}
str = array.join('');
return str;
}
letterCapitalize("hello world, hello world!");