2015-09-25 94 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()'方法引用的内容,但另一方面,你正在描述你正在描述的内容。 –