Javascript 使用Lodash/下划线从对象列表中跳过并返回对象
我需要执行类似于以下用C#编写的操作: 返回3、4和5 类似地,我需要跳过对象列表中的记录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
$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);