Javascript 使用Lodash/下划线从对象列表中跳过并返回对象

Javascript 使用Lodash/下划线从对象列表中跳过并返回对象,javascript,underscore.js,lodash,Javascript,Underscore.js,Lodash,我需要执行类似于以下用C#编写的操作: 返回3、4和5 类似地,我需要跳过对象列表中的记录 $scope.myObject = [ { Editable: true, Name: "Daniel Test", Site: "SE100"}, { Editable: true, Name: "Test new", Site: "SE100"}, { Editable: false, Name: "Test", Site

我需要执行类似于以下用C#编写的操作:

返回3、4和5

类似地,我需要跳过对象列表中的记录

$scope.myObject = [ { Editable: true, Name: "Daniel Test", Site: "SE100"},
                    { Editable: true, Name: "Test new", Site: "SE100"},
                    { Editable: false, Name: "Test", Site: "SE100"} ]
我需要跳过第一条记录并取回剩余的记录,即1-nth记录

我如何使用lodash/下划线来实现这一点?

下划线的和应该做到的技巧:

var a = _.first( _.rest(items, 2), 3);
而rest本身可用于跳过第一条记录:

$scope.allButTheFirst = _.rest( $scope.myObject, 1)
链接可用于使语句更美观,从而提高透明度:

var a = _.chain(items)
    .rest(2)
    .first(3)
    .value();
正如@RhysvanderWaerden的回答中所指出的,当使用lodash时,使用
drop
而不是
first
take
而不是
rest
,您可以使用和使用方法。作为替代方法,您可以使用数组方法

var offset=2;
var限值=3;
var项目=[1,2,3,4,5,6,7];
var result1=u1;(items).slice(offset).take(limit).value();
var result2=items.slice(偏移量、偏移量+限制);
document.getElementById('result1')。innerText=result1.toString();
document.getElementById('result2')。innerText=result2.toString()

lodash v3:
瓦尼拉JS:

在Lodash中,
first
rest
函数的行为与下划线不同。也就是说,他们不接受长度参数。相反,应使用
drop
take

const skip = 0;
const take = 40;
您可以使用
。.chunk(数组,计数)

只需传递count,您将获得count size数组中的所有数组,然后传递值,您将摇滚。+1

return _.slice(items, skip, skip + take);
你可以这么做

items.slice(skip, skip + take);
或者只是使用原生js

/*带排序和分页的分页*/
常数页=1;//输入页,最小值1
常数极限=2;//输入限制最小值1
/*输入阵列*/
常量数组=[
{可编辑:true,名称:“Daniel Test”,站点:“SE100”},
{可编辑:true,名称:“testnew”,站点:“SE100”},
{可编辑:false,名称:“Test”,站点:“SE100”},
];
/*带排序和分页的分页*/
常量结果=(数组)
.orderBy(['Name'],['asc'])//按升序排序
.drop((第-1页)*限制)//drop函数中的页面从0开始
.take(limit)//limit 2
.value();
控制台日志(结果);
log(JSON.stringify(result));
/*
结果:
限制2
按升序排序
[
{
“可编辑”:真,
“名称”:“Daniel Test”,//名称按升序排序
“站点”:“SE100”
},
{
“可编辑”:false,
“名称”:“测试”,
“站点”:“SE100”
}
]
*/

如果您只想获取数组中的第三项,并且正在使用链接,请不要附加
.value()
。在本例中,
first()
已返回标量值。如果未调用
value
,则结果将是下划线包装的对象,而不是链中最后一个函数返回的值。您是对的,除非您在没有任何参数的情况下调用
first
,在这种情况下,它返回第一个值,而不是包装器。我没有先测试
first(1)
,但我已经测试了
first()
。这对Lodash v4不再有效,因为
rest()
first()
方法需要函数!请参阅@rmks已澄清,这是一个使用下划线的解决方案,并在其中总结了Rhys van der Waerden的答案,以避免混淆。var result=uux.chunk(数组,计数),然后result给出计数数组。所以它正在工作,请检查。我在许多项目中使用过。
return _.slice(items, skip, skip + take);
items.slice(skip, skip + take);