Javascript JS-对对象中的子对象进行排序

Javascript JS-对对象中的子对象进行排序,javascript,boolean,Javascript,Boolean,我试图找出是否有一种方法可以使用bool值对对象中的对象进行排序。我找不到任何帮助,甚至不确定是否可能 我的对象示例如下: { "Music": { "Key": "Music", "Title": "Music", "Icon": "t-music", "Colour": "blue", "Active": false }, "The Arts": { "Key": "The Arts", "Title": "The Arts",

我试图找出是否有一种方法可以使用bool值对对象中的对象进行排序。我找不到任何帮助,甚至不确定是否可能

我的对象示例如下:

{
"Music": {
    "Key": "Music",
    "Title": "Music",
    "Icon": "t-music",
    "Colour": "blue",
    "Active": false
},
"The Arts": {
    "Key": "The Arts",
    "Title": "The Arts",
    "Icon": "t-arts",
    "Colour": "blue",
    "Active": false
},
"Social": {
    "Key": "Social",
    "Title": "Social",
    "Icon": "t-social",
    "Colour": "yellow",
    "Active": true
}
}


是否可以根据“活动”布尔值对父对象中的这些对象进行排序?

尽管对象没有排序顺序,但您可以根据
活动布尔值将这些对象组织在一个数组中。使用和

var obj={
“音乐”:{
“键”:“音乐”,
“标题”:“音乐”,
“图标”:“t-music”,
“颜色”:“蓝色”,
“活动”:错误
},
“艺术”:{
“关键”:“艺术”,
“标题”:“艺术”,
“图标”:“t-arts”,
“颜色”:“蓝色”,
“活动”:真
},
“社会性”:{
“关键”:“社交”,
“头衔”:“社交”,
“图标”:“t-social”,
“颜色”:“黄色”,
“活动”:真
}
};
var sorted=Object.keys(obj)/[“音乐”、“艺术”、“社交”]
.排序(功能(a、b){
返回obj[b].Active-obj[a].Active;//组织类别数组
})
.map(功能(类别){
返回obj[category];//将类别数组转换为对象数组
});

对象中不存在顺序的概念,但您可以通过将元素转换为数组,对其进行排序,然后从中创建新对象来直观地洗牌条目

通过使用
数组#sort
并向其传递函数,可以从嵌套值进行排序

let arr = Object.entries(obj).sort(([key1, val1], [key2, val2]) => val2.Active)

arrayToObject = array => {
  let newObj = {}
  array.forEach(([key, val]) => {
    newObj[key] = val
  })
  return newObj
}

console.log(arrayToObject(arr))

// { Social: 
//   { Key: 'Social',
//     Title: 'Social',
//     Icon: 't-social',
//     Colour: 'yellow',
//     Active: true },
//   Music: 
//   { Key: 'Music',
//     Title: 'Music',
//     Icon: 't-music',
//     Colour: 'blue',
//     Active: false },
//   'The Arts': 
//   { Key: 'The Arts',
//     Title: 'The Arts',
//     Icon: 't-arts',
//     Colour: 'blue',
//     Active: false } }
谢谢各位

我不确定物体是否能被分类,但问起来也没什么坏处

Borja的答案对我很有用,但只有一次我使用了Thomas'obj[b].Active-obj[a].Active“代替”!obj[a].活动(&obj[b].活动'


我刚刚看到了安德鲁的反应,也将对此进行测试

对象没有顺序您可以执行以下操作:
Object.keys(yourObj).排序(…)
以获得显示键的顺序:
obj[b]。Active-obj[a]。Active
,因为它处理的是
obj[b]。Active==obj[a]。Active