(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;
});
letterArray.map(function(e,i){return [e,valueArray[i]]})
- Dan Manastireanumap.sort(function(e1,e2){return e1[1]-e2[1];})
- Dan Manastireanu