{
A:[5,0,0],
B: [0,2,3],
기음:[0,3,2],
}
첫 번째 열, 두 번째 열, 마지막 열로 정렬합니다.
정렬은 다음과 같이 수행할 수 있습니다.
- 개체를 배열로 변환합니다. 각 속성은 배열 요소에 해당합니다. 여기서 요소의 첫 번째 값은 속성 이름이고 두 번째 값은 속성 값의 배열입니다.
- 메서드를 사용하여
Array.sort()
배열을 정렬합니다. 정렬할 때 두 배열의 요소 크기를 비교하기 위해 사용자 지정 비교 함수가 전달됩니다. - 비교 함수에서 먼저 두 배열 요소의 첫 번째 값을 비교하고 첫 번째 값이 같으면 두 번째 값을 비교하는 식입니다.
- 정렬이 완료되면 배열을 다시 객체 형태로 변환합니다.
다음은 구현 코드입니다.
const obj = {
A: [5, 0, 0],
B: [0, 2, 3],
C: [0, 3, 2]
};
const arr = Object.entries(obj); // 将对象转换为数组
arr.sort((a, b) => {
for (let i = 0; i < a[1].length; i++) {
if (a[1][i] !== b[1][i]) {
return a[1][i] - b[1][i];
}
}
return 0;
}); // 对数组进行排序
const sortedObj = Object.fromEntries(arr); // 将数组转换回对象形式
console.log(sortedObj); // 输出{ B: [ 0, 2, 3 ], C: [ 0, 3, 2 ], A: [ 5, 0, 0 ] }
위의 코드에서는 먼저 객체를 배열로 변환하는 Object.entries()
메서드를 사용 하고 배열을 정렬하는 메서드를 사용하며 정렬할 때 두 배열 요소의 크기를 비교하는 비교 함수를 전달합니다. 비교 함수에서 루프를 사용하여 두 배열 요소의 각 값을 비교하고 서로 다른 경우 차이를 반환하고 모든 값이 동일하면 0을 반환합니다. 마지막으로 이 메서드를 사용하여 정렬된 배열을 객체 형태로 다시 변환하여 정렬된 객체 를 생성합니다 .obj
arr
Array.sort()
Object.fromEntries()
arr
sortedObj
[
{'아':5},
{'B':2,'C':3},
{'B':3,'C':2},
]
배열의 객체를 정렬하고,
let newArr = []
arr.map(item=>{
newArr.push(Object.fromEntries(Object.entries(item).sort((a,b)=>b[1]-a[1])))
})
function sortByProperty(obj, prop) {
// 将对象转化为键值对数组
const entries = Object.entries(obj);
const sortedEntries = entries.sort((a, b) => b[1][prop] - a[1][prop]);
// 将数组转化为对象
return Object.fromEntries(sortedEntries);
}
// 示例用法
const obj = {
a: {
name: 'Alice', age: 25 },
b: {
name: 'Bob', age: 30 },
c: {
name: 'Charlie', age: 20 }
};
const result = sortByProperty(obj, 'age');
console.log(result); // { c: { name: 'Charlie', age: 20 }, a: { name: 'Alice', age: 25 }, b: { name: 'Bob', age: 30 } }