2014-06-16 52 views
0

剛發佈答案時遇到此問題,並未找出原因。切片鏈接JavaScript

下面是代碼:

var s = "aaaaaX.."; 

var a = s.slice(1); 
    a = a.slice(0, a.lastIndexOf("X"));  

var b = s.slice(1).slice(0, s.lastIndexOf("X"));  

var c = s.slice(1).slice(0, s.lastIndexOf("X") - 1); 

console.log(c); 

爲什麼a不等於b? 爲什麼要添加-1以便c == a

演示:http://jsfiddle.net/mb974/

+0

@cookiemonster是的,你是對的,只是想通了這一點,但我決定不刪除了一個問題,別人可能會遇到同樣的問題。 :) – Cristy

+2

因爲's.lastIndexOf(「X」)''中的's'是指未修改的's',而不是's.slice(1)'。 '.slice()'方法不會改變原始值。編輯:...對不起,我原來的措辭是錯誤的。 –

回答

2

那是因爲你已經從s取出一個第一字符,並將其分配給a變量。所以索引比字符串中的索引低1,而不是刪除第一個字符。

下面的例子將工作:

var a = s.slice(1); 
    a = a.slice(0, s.lastIndexOf("X"));  

var b = s.slice(1).slice(0, s.lastIndexOf("X")); 

// a == b 
+0

我相信OP希望'aaaa'而不是'aaaaX',但只是猜測。 –