如何按具有相同字符串的属性对嵌套对象进行排序、按升序移动值&;在JavaScript中创建Id
我当前有一个具有嵌套对象数组的对象,如下所示:如何按具有相同字符串的属性对嵌套对象进行排序、按升序移动值&;在JavaScript中创建Id,javascript,object,nested,Javascript,Object,Nested,我当前有一个具有嵌套对象数组的对象,如下所示: const gyms: any = { gymOne: [ { class: "yoga", name: "spin class 0" }, { class: "spin", name: "spin class 1" }, ], gymTwo: [ { class: "spin", name: "a sp
const gyms: any = {
gymOne: [
{ class: "yoga", name: "spin class 0" },
{ class: "spin", name: "spin class 1" },
],
gymTwo: [
{ class: "spin", name: "a spin class 3" },
{ class: "weightlifting", name: "weightlifting class 1" },
],
};
for (let key in gyms) {
if (typeof gyms[key] === "object") {
console.log(gyms[key]);
} else {
console.log("");
}
}
我的目标是创建一个新的结果对象,该对象忽略键(gymOne、gymtoo),基于相同的类名列出所有类(即所有自旋类都应该在一起),并对其重新排序,以便名称按字母升序排列
我对JavaScript很生疏,但这就是我开始获取类和名称的方式
for (let key in gyms) {
if (typeof gyms[key] === "object") {
console.log(gyms[key]);
} else {
console.log("");
}
}
我可能需要创建一个新对象,如let resultObj=[]
,以保存新的排序顺序
我很感激你的建议。多谢各位
编辑:这是当前控制台输出
[LOG]: [{
"class": "yoga",
"name": "spin class 0"
}, {
"class": "spin",
"name": "spin class 1"
}]
[LOG]: [{
"class": "spin",
"name": "a spin class 3"
}, {
"class": "weightlifting",
"name": "weightlifting class 1"
}]
所需的示例输出示例:
const resultObj = [
{ class: "spin", name: "a spin class 3" },
{ class: "spin", name: "spin class 1" },
{ class: "weightlifting", name: "weightlifting class 1" },
{ class: "yoga", name: "spin class 0" },
]
一个简单的方法是:
//首先,获取一个包含所有对象值的数组,这将是一个数组数组
对象值(gyms)
//flat返回一个新数组,其中子数组元素连接到该数组中
.flat()
//先按'class'排序,然后按'name'排序`
.排序((a,b)=>{
返回a.class.localeCompare(b.class)| | a.name.localeCompare(b.name)
})
一个简单的方法是:
//首先,获取一个包含所有对象值的数组,这将是一个数组数组
对象值(gyms)
//flat返回一个新数组,其中子数组元素连接到该数组中
.flat()
//先按'class'排序,然后按'name'排序`
.排序((a,b)=>{
返回a.class.localeCompare(b.class)| | a.name.localeCompare(b.name)
})
您可以从对象中获取所有值的平面数组,并按类
和名称
进行排序
const
健身房={gymOne:[{class:“瑜伽”,name:“旋转类0”},{class:“旋转类1”},{class:“旋转类3”},{class:“旋转类3”},{class:“举重”,name:“举重类1”},
items=Object.values(gyms.flat();
项目排序((a,b)=>
a、 class.localeCompare(b.class)||
a、 name.localeCompare(b.name)
);
控制台日志(项目)代码>
.as console wrapper{max height:100%!important;top:0;}
您可以从对象中获取所有值的平面数组,并按类和名称进行排序
const
健身房={gymOne:[{class:“瑜伽”,name:“旋转类0”},{class:“旋转类1”},{class:“旋转类3”},{class:“旋转类3”},{class:“举重”,name:“举重类1”},
items=Object.values(gyms.flat();
项目排序((a,b)=>
a、 class.localeCompare(b.class)||
a、 name.localeCompare(b.name)
);
控制台日志(项目)代码>
.as console wrapper{max height:100%!important;top:0;}
很好,我继续编辑。你有上面的结果吗?我用当前控制台输出更新了帖子以供参考。Object.values(gyms)、flatMap(e=>e.filter(e=>e.class==“spin”)
怎么样?我不确定你的预期输出是什么。请添加想要的结果。很好,我继续编辑了。你有上面的结果吗?我用当前控制台输出更新了帖子以供参考。关于Object.values(gyms).flatMap(e=>e.filter(e=>e.class==“spin”)
?我不确定您的预期输出是什么。请添加想要的结果。这也有效-谢谢!这同样有效-谢谢!