Javascript JS-对对象中的子对象进行排序
我试图找出是否有一种方法可以使用bool值对对象中的对象进行排序。我找不到任何帮助,甚至不确定是否可能 我的对象示例如下: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",
{
"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