eachSlice
eachSlice(size[, iterator = Prototype.K[, context]]) -> [slice...]
根据指定的大小对 Enumerable
中的元素进行分组,最后一组元素的个数可能小于指定的个数。
有时需要将一个集合划分为多个尺寸大致相同的分组。例如可能需要将集合中的数据显示为多列,或一些其它样式的布局。
也可能需要依次传入多组数据到后端进行处理(因为一些后端软件会对每次传入的数据个数进行硬编码限制),那么你应该会喜欢上
eachSlice
,如果每个分组的尺寸必须完全相同,请使用 inGroupsOf。
可选的 context
参数是 iterator
要绑定的对象,若设定该参数,iterator
中的 this
关键字将指向 context
对象。
样例
var students = [
{ name: 'Sunny', age: 20 }, { name: 'Audrey', age: 21 },
{ name: 'Matt', age: 20 }, { name: 'Élodie', age: 26 },
{ name: 'Will', age: 21 }, { name: 'David', age: 23 },
{ name: 'Julien', age: 22 }, { name: 'Thomas', age: 21 },
{ name: 'Serpil', age: 22 }
];
students.eachSlice(4, function(toon) {
return toon.pluck('name');
})
// -> [ ['Sunny', 'Audrey', 'Matt', 'Élodie'],
// ['Will', 'David', 'Julien', 'Thomas'],
// ['Serpil'] ]
students.eachSlice(2).first()
// -> [{ name: 'Sunny', age: 20 }, { name: 'Audrey', age: 21 }]
参见
eachSlice
的一种比较常见的情形,就是将集合划分为尺寸完全相同的分组,因此,在很多时候需要填充最后一个分组,
具体的信息请参见 inGroupsOf。