JavaScript에서 객체 키를 사용하여 객체 배열을 정렬하는 방법은 무엇입니까?

여기서는 해당 개체에서 사용할 수 있는 키를 사용하여 개체 배열을 정렬할 것입니다.

자바스크립트 코드를 실행하기 위해 Nodejs를 사용합니다. 터미널 또는 cmd를 입력하여 시스템에 Nodejs가 있는지 여부를 확인할 수 있습니다node -v. 가지고 있는 노드의 버전이 표시됩니다. 하지만 없는 경우 nodejs.org에서 다운로드할 수 있습니다.

그런 다음 test.js라는 하나의 파일을 만듭니다.
데이터 세트를 가져옵니다.

const data = [
  { name: 'madan', age: '12' },
  { name: 'man', age: '13' },
  { name: 'dan', age: '14' },
  { name: 'dam', age: '11' },
  { name: 'ram', age: '17' },
]


이제 데이터가 준비되었습니다. 데이터 정렬을 위한 논리 구현을 시작하겠습니다. 이를 위해 우리는 datakey라는 두 개의 매개변수를 전달하는 함수를 만들 것입니다. 여기서 data는 위의 데이터 세트를 정의하고 keynameage가 있는 것처럼 객체에서 사용할 수 있는 정렬하려는 키를 정의합니다.

function sortDataBy (data, byKey){
   //here your logic code
}


이제 함수 내에서 정렬된 데이터를 저장할 변수 하나를 만듭니다.

let sortedData;


그런 다음 byKey 라는 변수에서 주어진 키로 개체에 있는 모든 키를 확인합니다.

if(byKey == 'name'){
    //your logic for name
}
else if(byKey == 'age'){
    //your logic for age
}


먼저 name 키에 대한 논리를 작성합니다.

// we use javascript sort function to compare to value
sortedData = data.sort(function(a,b){
   // here a , b is whole object, you can access its property
   //convert both to lowercase
      let x = a.name.toLowerCase();
      let y = b.name.toLowerCase();

   //compare the word which is comes first
      if(x>y){return 1;} 
      if(x<y){return -1;}
      return 0;
    });


이제 우리는 age 키에 대한 로직을 작성하고 있습니다.

sortedData = data.sort(function(a,b){
    // here a , b is whole object, you can access its property

    // it will return the difference to sort function and then 
    // sort compare that difference is equal to 0 or smaller than 0 or 
    // greater than 0. on the basis of that it will give sorted number list
      return a.age - b.age;
    })


마지막에 데이터 변수sortedData를 반환합니다.

return sortedData;


함수를 완료한 후 객체의 다른 키로 함수를 호출하여 출력을 확인할 수 있습니다.

console.log('sort by age\n');
console.log(sortDataBy(data, 'name'));
console.log('sort by age\n');
console.log(sortDataBy(data, 'age'));


이제 터미널에 입력하여 파일을 실행할 수 있습니다node test.
출력은

sort by age

[
    { name: 'dam', age: '11' },
    { name: 'dan', age: '14' },
    { name: 'madan', age: '12' },
    { name: 'man', age: '13' },
    { name: 'ram', age: '17' }
]
sort by age

[
    { name: 'dam', age: '11' },
    { name: 'madan', age: '12' },
    { name: 'man', age: '13' },
    { name: 'dan', age: '14' },
    { name: 'ram', age: '17' }
]


마지막으로 사용하기 쉽도록 여기에 전체 코드를 제공합니다.

const data = [
  { name: 'madan', age: '12' },
  { name: 'man', age: '13' },
  { name: 'dan', age: '14' },
  { name: 'dam', age: '11' },
  { name: 'ram', age: '17' },
];

function sortDataBy (data, byKey){
  let sortedData;
  if(byKey == 'name'){
    sortedData = data.sort(function(a,b){
      let x = a.name.toLowerCase();
      let y = b.name.toLowerCase();
      if(x>y){return 1;}
      if(x<y){return -1;}
      return 0;
    });
  }else{
    sortedData = data.sort(function(a,b){
      return a.age - b.age;
    })
  }
  return sortedData;
}

console.log('sort by age\n');
console.log(sortDataBy(data, 'name'));
console.log('sort by age\n');
console.log(sortDataBy(data, 'age'));



감사합니다. 즐거운 코딩하세요!!

좋은 웹페이지 즐겨찾기