객체는 속성별로 정렬됩니다.

{

A:[5,0,0],

B: [0,2,3],

기음:[0,3,2],

}

첫 번째 열, 두 번째 열, 마지막 열로 정렬합니다.

정렬은 다음과 같이 수행할 수 있습니다.

  1. 개체를 배열로 변환합니다. 각 속성은 배열 요소에 해당합니다. 여기서 요소의 첫 번째 값은 속성 이름이고 두 번째 값은 속성 값의 배열입니다.
  2. 메서드를 사용하여 Array.sort()배열을 정렬합니다. 정렬할 때 두 배열의 요소 크기를 비교하기 위해 사용자 지정 비교 함수가 전달됩니다.
  3. 비교 함수에서 먼저 두 배열 요소의 첫 번째 값을 비교하고 첫 번째 값이 같으면 두 번째 값을 비교하는 식입니다.
  4. 정렬이 완료되면 배열을 다시 객체 형태로 변환합니다.

다음은 구현 코드입니다.

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을 반환합니다. 마지막으로 이 메서드를 사용하여 정렬된 배열을 객체 형태로 다시 변환하여 정렬된 객체 를 생성합니다 .objarrArray.sort()Object.fromEntries()arrsortedObj

[

{'아':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 } }

Supongo que te gusta

Origin blog.csdn.net/qq_43720551/article/details/131237686
Recomendado
Clasificación