我正在嘗試創建一個排序函數,它在動態(以不同深度)動態給出鍵時對對象的嵌套數組進行排序。使用動態鍵排序對象的嵌套數組
sortByKey(array, key){
var splitKey = key.split(".");
if(splitKey.length = 2){
return array.sort(function(a, b) {
var x = a[splitKey[0]][splitKey[1]]; var y = b[splitKey[0]][splitKey[1]];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
} else {
return array.sort(function(a, b) {
var x = a[key]; var y = b[key];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
}
}
我想擺脫if - else
和使用for
循環來代替。目標是該函數與'name','name.first'和'name.first.another'(作爲示例)一起工作。有沒有辦法做到這一點動態?
換句話說,我想用不同的數組使用相同的函數。因此,對於一個數組,我想對sortByKey(array1,'name')和另一個sortByKey(array2,'location.address')進行排序,也可能使用第三個sortByKey(array3,'location.address.postalcode')或其他像那樣。
'如果(splitKey.length = 2)'是不可能做你的想法。 – 2016-08-18 12:44:35
你能提供你想要完成什麼樣的例子嗎? – Radioreve