对充满由对象组成的数组的对象进行排序
Sort an object which is filled with arrays consisting of objects
我遇到了一个问题,我得到了 Api 结果,为了方便我无法修改这些结果,我必须处理我得到的结果。
我得到一个充满数组的对象,其中也有类似于这个的对象:
{
sectionOne: [{game: 1, order: 3},{game: 2},{game: 3},{game: 4}],
sectionTwo: [{game: 1, order: 1},{game: 2},{game: 3},{game: 4}],
sectionThree: [{game: 1, order: 2},{game: 2},{game: 3},{game: 4}],
}
在所有部分中,数组中的第一个元素始终有一个名为 order 的键,这是数组需要在对象中的位置。
从上面的例子来看,预期的结果应该是:
{
sectionThree: [{game: 1, order 1},{game: 2},{game: 3},{game: 4}],
sectionOne: [{game: 1, order 2},{game: 2},{game: 3},{game: 4}],
sectionTwo: [{game: 1, order 3},{game: 2},{game: 3},{game: 4}],
}
PS。我知道没有可以对对象进行排序的方法,我尝试使用条目和键映射它们,但我不知道如何深入结构并定位它们。
这对你有用吗?
arr = arr.sort((a, b) => a[0].order - b[0].order)
如果我没理解错的话,你需要这样的功能:
const sortKeys = (obj) => {
return Object.keys(obj).sort().reduce((acc, key) => {
acc[key] = obj[key];
return acc;
}, {});}
您可以使用 Array#sort
and Destructuring Assignment
:
const obj = {
sectionOne: [{ game: 1, order: 3 }, { game: 2 }, { game: 3 }, { game: 4 }],
sectionTwo: [{ game: 1, order: 1 }, { game: 2 }, { game: 3 }, { game: 4 }],
sectionThree: [{ game: 1, order: 2 }, { game: 2 }, { game: 3 }, { game: 4 }],
};
let sortedObj = Object.fromEntries(
Object.entries(obj).sort(
([, [{ order: o1 }]], [, [{ order: o2 }]]) => o1 - o2
)
);
console.log(sortedObj);
我遇到了一个问题,我得到了 Api 结果,为了方便我无法修改这些结果,我必须处理我得到的结果。 我得到一个充满数组的对象,其中也有类似于这个的对象:
{
sectionOne: [{game: 1, order: 3},{game: 2},{game: 3},{game: 4}],
sectionTwo: [{game: 1, order: 1},{game: 2},{game: 3},{game: 4}],
sectionThree: [{game: 1, order: 2},{game: 2},{game: 3},{game: 4}],
}
在所有部分中,数组中的第一个元素始终有一个名为 order 的键,这是数组需要在对象中的位置。 从上面的例子来看,预期的结果应该是:
{
sectionThree: [{game: 1, order 1},{game: 2},{game: 3},{game: 4}],
sectionOne: [{game: 1, order 2},{game: 2},{game: 3},{game: 4}],
sectionTwo: [{game: 1, order 3},{game: 2},{game: 3},{game: 4}],
}
PS。我知道没有可以对对象进行排序的方法,我尝试使用条目和键映射它们,但我不知道如何深入结构并定位它们。
这对你有用吗?
arr = arr.sort((a, b) => a[0].order - b[0].order)
如果我没理解错的话,你需要这样的功能:
const sortKeys = (obj) => {
return Object.keys(obj).sort().reduce((acc, key) => {
acc[key] = obj[key];
return acc;
}, {});}
您可以使用 Array#sort
and Destructuring Assignment
:
const obj = {
sectionOne: [{ game: 1, order: 3 }, { game: 2 }, { game: 3 }, { game: 4 }],
sectionTwo: [{ game: 1, order: 1 }, { game: 2 }, { game: 3 }, { game: 4 }],
sectionThree: [{ game: 1, order: 2 }, { game: 2 }, { game: 3 }, { game: 4 }],
};
let sortedObj = Object.fromEntries(
Object.entries(obj).sort(
([, [{ order: o1 }]], [, [{ order: o2 }]]) => o1 - o2
)
);
console.log(sortedObj);