我完全困惑,为什么下面的下划线功能无法正常工作。下划线忽略可选参数
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