Enumerable.zip - Prototype JavaScript 框架

Xunxin Prototype API

zip

zip(Sequence...[, iterator = Prototype.K]) -> Array

将多个(两个及以上)序列按照顺序配对合并(想像一下拉链拉上的情形)为一个包含一序列元组的数组。 元组由每个原始序列的具有相同索引的元素组合而成。如果指定了可选的 iterator 参数,则元组由 iterator 指定的函数生成。

以前没有使用过 zip 函数的人(其实也就是没有 Haskell 或 Ruby 工作经验), 对于理解这个函数的行为可能会有一些困难。这里有一些例子,希望能够对你有所帮助。

样例

var firstNames = ['Justin', 'Mislav', 'Tobie', 'Christophe'];
var lastNames = ['Palmer', 'Marohnić', 'Langel', 'Porteneuve']; 

firstNames.zip(lastNames)
// -> [['Justin', 'Palmer'], ['Mislav', 'Marohnić'], 
// ['Tobie', 'Langel'], ['Christophe', 'Porteneuve']] 

firstNames.zip(lastNames, function(a) { 
	return a.join(' '); 
}) 
// -> ['Justin Palmer', 'Mislav Marohnić', 'Tobie Langel', 'Christophe Porteneuve']

var cities = ['Memphis', 'Zagreb', 'Montreal', 'Paris']; 
firstNames.zip(lastNames, cities, function(p) { 
	return p[0] + ' ' + p[1] + ', ' + p[2]; 
}) 
// -> ['Justin Palmer, Memphis', 'Mislav Marohnić, Zagreb', 
// 'Tobie Langel, Montreal', 'Christophe Porteneuve, Paris'] 

firstNames.zip($R(1, 100), function(a) { 
	return a.reverse().join('.'); 
}) 
// -> ['1. Justin', '2. Mislav', '3. Tobie', '4. Christophe']