Enumerable.eachSlice - Prototype JavaScript 框架

Xunxin Prototype API

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