<p>除了ninjagecko出色而全面的回答之外,将两个JS数组压缩成一个“元组模拟”只需要:</p>
<pre><code>//Arrays: aIn, aOut
Array.prototype.map.call( aIn, function(e,i){return [e, aOut[i]];})
</code></pre>
<p><strong>说明:</strong><br/>
由于Javascript没有<code>tuples</code>类型,因此元组、列表和集合的函数在语言规范中不是高优先级的。<br/>
否则,可以通过<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map" rel="noreferrer">Array map in JS >1.6</a>直接访问类似的行为。(<code>map</code>实际上,在许多>;JS 1.4引擎中,尽管没有指定,JS引擎制造商通常都会实现它)
与Python的<code>zip</code>,<code>izip</code>,。。。结果来自<code>map</code>的函数样式,因为<code>map</code>需要一个函数参数。此外,它是<code>Array</code>-实例的函数。如果输入的额外声明有问题,则可以使用<code>Array.prototype.map</code>。</p>
<p><strong>示例:</strong></p>
<pre><code>_tarrin = [0..constructor, function(){}, false, undefined, '', 100, 123.324,
2343243243242343242354365476453654625345345, 'sdf23423dsfsdf',
'sdf2324.234dfs','234,234fsf','100,100','100.100']
_parseInt = function(i){return parseInt(i);}
_tarrout = _tarrin.map(_parseInt)
_tarrin.map(function(e,i,a){return [e, _tarrout[i]]})
</code></pre>
<p><strong>结果:</strong></p>
<pre><code>//'('+_tarrin.map(function(e,i,a){return [e, _tarrout[i]]}).join('),\n(')+')'
>>
(function Number() { [native code] },NaN),
(function (){},NaN),
(false,NaN),
(,NaN),
(,NaN),
(100,100),
(123.324,123),
(2.3432432432423434e+42,2),
(sdf23423dsfsdf,NaN),
(sdf2324.234dfs,NaN),
(234,234fsf,234),
(100,100,100),
(100.100,100)
</code></pre>
<p><strong>相关性能:</strong></p>
<p>在<code>for</code>循环上使用<code>map</code>-循环:</p>
<p>见:<a href="https://stackoverflow.com/questions/10293378/what-is-the-most-efficient-way-of-merging-1-2-and-7-8-into-1-7-2-8/17910641#17910641">What is the most efficient way of merging [1,2] and [7,8] into [[1,7], [2,8]]</a></p>
<p><img src="https://i.stack.imgur.com/PMbz0.png" alt="zip tests"/></p>
<p><strong>注意:</strong>基类型(如<code>false</code>和<code>undefined</code>)不具有原型对象层次结构,因此不公开<code>toString</code>函数。因此,这些在输出中显示为空。<br/>
由于<code>parseInt</code>的第二个参数是基数/数字基数,要将数字转换为基数,并且由于<code>map</code>将索引作为第二个参数传递给其参数函数,因此使用包装函数。</p>