2015-09-25 53 views
1

我完全困惑,爲什麼下面的下劃線功能無法正常工作。下劃線忽略可選參數

var testArray = [1, 2, 3, 4]; 
var resultingArray = _.first(testArray, 2); 
console.log(resultingArray); 

我不斷收到1登錄到控制檯。我已經嘗試過與_.initial類似的練習,並且似乎忽略了可選的n參數。任何人都知道可能會發生什麼?

+0

數組被聲明後被修改嗎?顯示的代碼正常工作 – charlietfl

+0

按照預期在[jsfiddle](http://jsfiddle.net/2yu50dr4/)上工作,它會記錄'[1,2]',也許你創建了一個能夠重現結果的jsfiddle。 – fuyushimoya

回答

1

您確定您使用的是underscore.js而不是lodash

lodash按照您所描述的方式運行,其_.first() method不採用除陣列本身以外的任何參數。它具體地選擇了第一個元素:

_.first(array)

獲取陣列的第一個元素。

要做到這一點與lodash我們會改用its _.take() method

_.take(array, [n=1])

創建從一開始就採取了n個元素數組的一個切片。

var resultingArray = _.take(testArray, 2); 
--> [1, 2] 
+0

我正在使用下劃線,這是直接從他們的文檔: 「_.first(array,[n]) 返回數組的第一個元素。傳遞n將返回數組的前n個元素。 – MattDionis

+0

@MattDionis通過我的瀏覽器的JS控制檯在underscore.js的網站上運行你的代碼返回'[1,2]'。在lodash的網站上做同樣的事情會返回'1'。這就是爲什麼我認爲你可能實際上沒有使用underscore.js。 –

+0

@MattDionis記住兩者的語法都是一樣的。兩者都有'_'的基本變量,並且都有'_.first()'方法。據我所知,underscore.js總是完成你用'_.first()'方法引用的內容,但另一方面,你正在描述你正在描述的內容。 –