我完全困惑,爲什麼下面的下劃線功能無法正常工作。下劃線忽略可選參數
var testArray = [1, 2, 3, 4];
var resultingArray = _.first(testArray, 2);
console.log(resultingArray);
我不斷收到1
登錄到控制檯。我已經嘗試過與_.initial
類似的練習,並且似乎忽略了可選的n
參數。任何人都知道可能會發生什麼?
我完全困惑,爲什麼下面的下劃線功能無法正常工作。下劃線忽略可選參數
var testArray = [1, 2, 3, 4];
var resultingArray = _.first(testArray, 2);
console.log(resultingArray);
我不斷收到1
登錄到控制檯。我已經嘗試過與_.initial
類似的練習,並且似乎忽略了可選的n
參數。任何人都知道可能會發生什麼?
您確定您使用的是underscore.js而不是lodash?
lodash按照您所描述的方式運行,其_.first()
method不採用除陣列本身以外的任何參數。它具體地選擇了第一個元素:
_.first(array)
獲取陣列的第一個元素。
要做到這一點與lodash我們會改用its _.take()
method:
_.take(array, [n=1])
創建從一開始就採取了n個元素數組的一個切片。
var resultingArray = _.take(testArray, 2);
--> [1, 2]
我正在使用下劃線,這是直接從他們的文檔: 「_.first(array,[n]) 返回數組的第一個元素。傳遞n將返回數組的前n個元素。 – MattDionis
@MattDionis通過我的瀏覽器的JS控制檯在underscore.js的網站上運行你的代碼返回'[1,2]'。在lodash的網站上做同樣的事情會返回'1'。這就是爲什麼我認爲你可能實際上沒有使用underscore.js。 –
@MattDionis記住兩者的語法都是一樣的。兩者都有'_'的基本變量,並且都有'_.first()'方法。據我所知,underscore.js總是完成你用'_.first()'方法引用的內容,但另一方面,你正在描述你正在描述的內容。 –
數組被聲明後被修改嗎?顯示的代碼正常工作 – charlietfl
按照預期在[jsfiddle](http://jsfiddle.net/2yu50dr4/)上工作,它會記錄'[1,2]',也許你創建了一個能夠重現結果的jsfiddle。 – fuyushimoya