我想按字长排序这句话“这个帐户有一个未经证实的电子邮件地址”我该怎么办呢。
<script>
$(document).ready(function(){
var some = "";
xx = "";
var vText = "This account has an unconfirmed email address";
slitTxt = vText.split(" ");
for(i=0; i <= slitTxt.length; i++ ){
xx = slitTxt[i].length;
some = $('body').append(xx+" ")
}
});
</script>
答案 0 :(得分:1)
您正在检查确实存在或未定义的lastindex + 1,删除等于来自循环条件的符号替换&#34;&lt; =&#34;与&#34;&lt;&#34;
例如,如果数组长度为5,则使用&lt; = array.length表示检查5或小于5,此处第一个索引为0,last为4,因此5未定义
<script>
$(document).ready(function(){
var some = "";
xx = "";
var vText = "This account has an unconfirmed email address";
slitTxt = vText.split(" ");
for(i=0; i < slitTxt.length; i++ ){
xx = slitTxt[i].length;
some = $('body').append(xx+" ")
}
});
</script>
答案 1 :(得分:1)
错误来自于这一行:
for(i=0; i <= slitTxt.length; i++ )
数组是0索引的,这意味着第一个单元格为0
,但长度为1
因此,如果您的数组包含5个元素,则最后一个元素将为arr[4]
或arr[arr.length-1]
因此,当for
循环中的条件为i <= slitTxt.length
时,最后一次迭代将与slitTxt[slitTxt.length]
相同,因此,它将为undefined
。
请尝试改为:
for(i=0; i < slitTxt.length; i++ )
答案 2 :(得分:0)
您可以使用map()
代替for循环。例如:
var vText = "This account has an unconfirmed email address",
slitTxt = vText.split(" ");
slitTxt.map(function(val, ind){$('body').append(val + " ");});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<html><body></body></html>
&#13;