Javascript 数组推送函数向数组中添加一个或多个空索引 函数间距(num){ var a=[]; var aToStr=“”; 对于(i=0;i

Javascript 数组推送函数向数组中添加一个或多个空索引 函数间距(num){ var a=[]; var aToStr=“”; 对于(i=0;i,javascript,arrays,split,push,Javascript,Arrays,Split,Push,From: 找到分隔符后,将从字符串中删除分隔符,并在数组中返回子字符串 错误说明: 使用拆分开始搜索,首先查找& function spacing(num){ var a=[]; var aToStr=""; for(i=0;i<num;i++) { a.push("&nbsp") } for(i=0;i<a.length;i++) { aToStr=a[i]+aToStr; } //

From:

找到分隔符后,将从字符串中删除分隔符,并在数组中返回子字符串

错误说明:
  • 使用
    拆分开始搜索
    ,首先查找&

    function spacing(num){
        var a=[];
        var aToStr="";
        for(i=0;i<num;i++) {
            a.push("&nbsp")
        }
        for(i=0;i<a.length;i++) {
            aToStr=a[i]+aToStr;
        }
        // alert(a.length);result is 5 here
        // alert(aToStr.split("&").length);//here result is 6 and when printed to screen theres an empty index
        return aToStr;
    } 
    
  • 第二&

    &nbsp&nbsp&nbsp&nbsp&nbsp
    // & found and removed, resulting in  ' '
    // returnArrForSplit = ['']
    
  • 第三&

    nbsp&nbsp&nbsp&nbsp&nbsp
    // & found and removed, everything before pushed to returnArrForSplit, 'nbsp'
    // returnArrForSplit = ['', nbsp]
    
  • 第四&

    nbsp&nbsp&nbsp&nbsp
    // & found and removed, resulting in  'nbsp'
    // returnArrForSplit = ['', nbsp, nbsp]
    
  • 决赛&

    nbsp&nbsp&nbsp
    // & found and removed, resulting in  'nbsp'
    // returnArrForSplit = ['', nbsp, nbsp, nbsp]
    
  • 但是还有一个
    nbsp
    nbsp

    nbsp&nbsp
    // & found and removed, resulting in  'nbsp'
    // returnArrForSplit = ['', nbsp, nbsp, nbsp, nbsp]
    
  • 固定代码
    函数间距(num){
    var a=[];
    var aToStr=“”;
    
    对于(i=0;i首先,您的问题应简化为:

    为什么

    是3而不是2

    为什么

    是2而不是0吗

    对于上一个版本,答案是JavaScript认为您有2个空字符串(
    ):其中一个在分隔符之前,另一个在分隔符之后。为什么?这就是他们决定实现此函数的方式=>只是一个决定。在Java中,类似的尝试将返回
    0

    如果您认为这很奇怪,请注意
    “a”.split(“b”).length
    返回
    1


    因此,JavaScript认为,
    answer=1+numberofappearancesfortheseparator

    如果你有“x-x-x”,你有2个分隔符,但有3个。这是一个预期的行为。
    aToStr
    是一个字符串,而不是数组,所以当我设置一个.push(“ >)时,你不能移动它用一个空格,然后用空格分开,它会返回一个索引是的,我现在明白了,它会添加到结尾,因为结尾是+空格,谢谢你的帮助
    nbsp
    // added as last substring
    // returnArrForSplit = ['', nbsp, nbsp, nbsp, nbsp, nbsp]
    returnArrForSplit.shift()
    // removes unwanted empty string.
    
    function spacing(num){
        var a=[];
        var aToStr="";
        for(i=0;i<num;i++) {
            a.push("&nbsp")
        }
        for(i=0;i<a.length;i++) {
            aToStr=a[i]+aToStr;
        }
    
        return aToStr;
    }
    
    var spaces = spacing(5);
    // "&nbsp&nbsp&nbsp&nbsp&nbsp"
    
    spaces = spaces.split('&');
    // ["", "nbsp", "nbsp", "nbsp", "nbsp", "nbsp"]
    
    spaces.shift() // returns ''
    // spaces is ["nbsp", "nbsp", "nbsp", "nbsp", "nbsp"]
    
    "&nbsp&nbsp".split("&").length
    
    "&".split("&").length