[英]Sort Array of objects with keys
我正在嘗試javascript中的所有知識。 有沒有辦法根據密鑰對此進行排序?
var myObj =[{"2":"installation.diagnostics.status"},{"4":"installation.diagnostics.status"},{"3":"installation.diagnostics.status"}];
這是我的代碼!!
var result=JSON.stringify(navMenu);
eval('var obj='+result);
console.log(obj);
Object.keys(obj)
.sort()
.forEach(function (k) {
console.log(obj[k]);
});
至
var myObj =[{"2":"installation.diagnostics.status"},{"3":"installation.diagnostics.status"},{"4":"installation.diagnostics.status"}]
鑒於:
var myObj =[{"2":"installation.diagnostics.status"},{"4":"installation.diagnostics.status"},{"3":"installation.diagnostics.status"}];
您可以使用以下方式對其進
myObj.sort(function(a, b){return Object.keys(a)[0] - Object.keys(b)[0]});
您可能需要Object.keys的polyfill來支持舊版瀏覽器。
請注意,這會將第一個返回的屬性名稱排序為數字。 如果myObj的任何成員具有多個自己的屬性或者返回的第一個不是數字,則它可能無法按預期工作。
嘗試這個 :
(function (s) {
var t = {};
Object.keys(s).sort().forEach(function (k) {
t[k] = s[k]
});
return t
})(myObj)
這個對我有用。
function sortArrayOfObjectsByKey(array, key, order){
// can sort forward or in reverse - can be passed as integer or string
// if order not passed in, defaults to 1 (forward)
order = !order ? 1 : order;
if (order === -1 || order.toString().toLowerCase() === "reverse"){
array.sort(function(first, second) {
if (first[key] < second[key]) { return 1; }
else if (first[key] > second[key]) { return -1; }
return 0;
});
}
else {
array.sort(function(first, second) {
if (first[key] < second[key]) { return -1; }
else if (first[key] > second[key]) { return 1; }
return 0;
});
}
return array;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.