Javascript 使用#标记数组的结尾

Javascript 使用#标记数组的结尾,javascript,arrays,string,Javascript,Arrays,String,我目前正在研究另一个用户的代码,以解决LeetCode的一个编码问题。我的问题是关于他的代码的某些方面。这里有到的链接 问题: 为什么此用户使用#标记数组的结尾 在第二种if情况下,用户写入: ans.push(nums[t] + '->' + (nums[i-1])) 现在,我明白这句话的意思了。我的问题是:为什么这会产生[“0->2”,…]的输出,而不是[0”->“2,…” var summaryRanges = function(nums) { var t = 0

我目前正在研究另一个用户的代码,以解决LeetCode的一个编码问题。我的问题是关于他的代码的某些方面。这里有到的链接

问题: 为什么此用户使用
#
标记数组的结尾

在第二种
if
情况下,用户写入:

ans.push(nums[t] + '->' + (nums[i-1]))
现在,我明白这句话的意思了。我的问题是:为什么这会产生
[“0->2”,…]
的输出,而不是
[0”->“2,…”

var summaryRanges = function(nums) {
    var t = 0
    var ans = []
    nums.push('#')
    for(var i=1;i<nums.length;i++)
        if(nums[i]-nums[t] !== i-t){
            if(i-t>1)
                ans.push(nums[t]+'->'+(nums[i-1]))
            else
                ans.push(nums[t].toString())
            t = i
        }
    return ans
}
var summaryRanges=函数(nums){
var t=0
var ans=[]
nums.push(“#”)
对于(var i=1;i1)
ans.push(nums[t]+'->'+(nums[i-1]))
其他的
ans.push(nums[t].toString())
t=i
}
返回ans
}

算法取决于
nums[i]
nums[t]
之间的差异与
i
t
之间的差异不同。当这种情况发生时,算法会向输出中添加更多内容。当最后一个范围仅为一个数字时,这会产生一种特殊情况,因为这无法触发该条件


因此,哈希字符被填充以扩展数组以使算法工作,因此条件
nums[i]-nums[t]!=i-t
即使在单个数字的结束范围内也会触发。它可以是任何字符串,只要它不是整数。

nums[t]+'->'+(nums[i-1])
是字符串串联
0+“X”=“0X”
不可能生成
0”->“2
,因为这是一个语法错误。