चार्ल्स-क्लेटन और @ विकस-गौतम के कंधों पर खड़े होकर, मैंने स्ट्रिंग टेस्ट को जोड़ा, जो ओपी की तरह एक कॉलम में होता है।
return isNaN(a-b) ? (a === b) ? 0 : (a < b) ? -1 : 1 : a-b ;
परीक्षण isNaN(a-b)
यह निर्धारित करता है कि क्या तारों को संख्याओं के साथ ज़ब्त नहीं किया जा सकता है। यदि वे कर सकते हैं तो a-b
परीक्षण मान्य है।
ध्यान दें कि मिश्रित प्रकारों के एक कॉलम को छांटना हमेशा एक मनोरंजक परिणाम देगा क्योंकि सख्त समानता परीक्षण (a === b)
हमेशा गलत वापस आएगा।
एमडीएन यहां देखें
यह Google अनुप्रयोग स्क्रिप्ट का उपयोग करके लकड़हारा परीक्षण के साथ पूरी स्क्रिप्ट है।
function testSort(){
function sortByCol(arr, colIndex){
arr.sort(sortFunction);
function sortFunction(a, b) {
a = a[colIndex];
b = b[colIndex];
return isNaN(a-b) ? (a === b) ? 0 : (a < b) ? -1 : 1 : a-b ;
}
}
var a = [ [12,'12', 'AAA'],
[12,'11', 'AAB'],
[58,'120', 'CCC'],
[28,'08', 'BBB'],
[18,'80', 'DDD'],
]
var arr1 = a.map(function (i){return i;}).sort();
Logger.log("Original unsorted:\n " + JSON.stringify(a));
Logger.log("Vanilla sort:\n " + JSON.stringify(arr1));
sortByCol(a, 0);
Logger.log("By col 0:\n " + JSON.stringify(a));
sortByCol(a, 1);
Logger.log("By col 1:\n " + JSON.stringify(a));
sortByCol(a, 2);
Logger.log("By col 2:\n " + JSON.stringify(a));
}