(function(o){
var zip = function(){
var argLen = arguments.length;
var result = new Array(this.length);
for (var i=this.length-1;i>=0;--i){
var a = result[i] = [this[i]];
for (var j=0;j<argLen;++j) a[j+1] = arguments[j][i];
}
return result;
}
if (Object.defineProperty) Object.defineProperty(o,"zip",{value:zip});
else o.zip = zip;
})(Array.prototype);
var letters = ['a', 'e', 'i', 'o', 'u'];
var values = [12, 22, 7, 7, 3];
var valuesAndLetters = values.zip(letters);
var sorted = valuesAndLetters.sort(function(a,b){
return a[0]<b[0]?1:a[0]>b[0]?-1:a[1]<b[1]?1:a[1]>b[1]?-1:0;
});
. ( ) defineProperty Array.prototype , zip, :
Array.zip = function zip(a0,a1,etc,aN){
var argLen = arguments.length;
var result = new Array(a0.length);
for (var i=a0.length-1;i>=0;--i){
var a = result[i] = [a0[i]];
for (var j=1;j<argLen;++j) a[j] = arguments[j][i];
}
return result;
};
var letters = ['a', 'e', 'i', 'o', 'u'];
var values = [12, 22, 7, 7, 3];
var valuesAndLetters = Array.zip(values,letters);
var sorted = valuesAndLetters.sort(function(a,b){
return a[0]<b[0]?1:a[0]>b[0]?-1:a[1]<b[1]?1:a[1]>b[1]?-1:0;
});