我有一个数组,其中包含一个包含字符串的单元格。
var myArray = ["hopefully i will get an answer to this problem"]
尝试遍历数组本身并没有结果,因为我不习惯只使用一个单元格。
for(var i=0; i<myArray.length; i++) {
console.log(myArray[i]);
} //returns the whole string "hopefully i will get an answer to this problem"
//this would allow me to loop through many cells in one array but here i only have one cell in one aray
现在我想用每个单词的第一个字母做点什么。
但正如我上面所说,我习惯做的典型数组迭代通常是与许多单元格合作而不是单个单元格。
我的问题如下:
给定具有单个单元格的数组
var myArray = ["hopefully i will get an answer to this problem"]
掌握每个单词的第一个字母以便对其做些什么的最好方法是什么。
注意:
答案 0 :(得分:2)
你有一个包含1个元素的数组。您首先循环只进行一次迭代并输出第一个元素。 我相信你想做的是以下几点:
for(var i=0; i<myArray.length; i++) {
if(myArray[0][i] === " "){
//do some code with myArray[i]
}
}
答案 1 :(得分:2)
这里有几点要指出:
JS字符串本身就是一个字符数组,所以你确实可以遍历它们。但是,在您的示例中,您将循环遍历外部数组,该数组仅包含一个元素,因此其length
为1.这意味着该行
for(var i=0; i<myArray.length; i++) {
结合你在此后将i
减1的事实
console.log(myArray[i-1])
表示您的函数从-1
(i-1)循环,并在到达0
(i <1)时结束。由于myArray[-1]
是undefined
,因此您的结果来自toUpperCase()
。
如果删除外部数组,那么您的方法只适用于字符串。
然后,有更好的方法来实现你想要做的事情。 JS具有splitting a string into an array of words和joining an array of strings into a string的内置函数。将它与您循环使用单个单词或charAt()的方法结合起来,通过索引查找单个字符,您可以使代码更直接。
另外,请查看可以让您的生活更轻松的built-in methods and properties of Strings,例如toLowerCase()
和{{1}}。
希望这有帮助!
答案 2 :(得分:0)
数组的空项中可能有多个空格。所以在比赛之前你可以清除所有这样的空格
for(var i=1; i<myArray.length; i++) {
if(myArray[i-1].toString().replace(/\s/g,'') === ''){
//do some code with myArray[i]
}
}
或
for(var i=1; i<myArray.length; i++) {
if(!myArray[i-1].toString().replace(/\s/g,'')){
//do some code with myArray[i]
}
}
答案 3 :(得分:0)
myArray.length = 1所以不要使用数组来进行无法遍历,使用字符串