배열 메소드 - sort, reduce

soyeon·2022년 10월 27일
0

TIL

목록 보기
27/32

코딩앙마님 강의 보고 정리한 내용입니다.
https://youtu.be/RW25tEAMC9w

sort: 배열 원소 정렬

  • 배열 자체가 변경됨

  • 정렬할 때 문자열로 인식함

  • 인수로 정렬 로직을 담은 함수를 받는다.

  • 작은 것부터 정렬하기

let arr = [27, 8, 5, 2, 13];
function fn(a, b) {
  console.log(a, b);
  return a - b;
}
arr.sort(fn); //[2, 5, 8, 13, 27]

lodash - sortBy()

_.sortBy(배열,정렬할 필드명)

var items = [
  { no: 1, name: 'web', date: '180804' },
  { no: 2, name: 'is', date: '180802' },
  { no: 3, name: 'free', date: '180801' },
  { no: 4, name: 'forever', date: '180804' },
];

_.sortBy(items, 'date');

// 출력결과
[
  {no: 3, name: "free", date: "180801"},
  {no: 2, name: "is", date: "180802"},
  {no: 1, name: "web", date: "180804"},
  {no: 4, name: "forever", date: "180804"}
]

출처 : https://webisfree.com/2018-07-30/lodash-%EC%86%8C%ED%8C%85-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0-sortby()

reduce

  • arr.reduce((누적 계산값, 현재값) => {return 계산값},누적 계산값의 기본값(옵션))

모든 수 합치기 - forEach

let arr = [1, 2, 3, 4, 5];
let result = 0;
arr.forEach((num) => {
  result += num;
});
console.log(result); //15

reduce로 해결하기

let result = arr.reduce((prev,cur)=>{
	return prev + cur;
},0);
console.log(result); //15

유저리스트에서 이름이 3글자인 사람만 고르기

let userList = [
  { name: "Mike", age: 9 },
  { name: "Tom", age: 10 },
  { name: "Jane", age: 27 },
  { name: "Sue", age: 26 },
  { name: "Harry", age: 42 },
  { name: "Steve", age: 69 }
];
let result = userList.reduce((prev,cur)=>{
	if (cur.name.length === 3){
      prev.push(cur.name);
    }
  return prev;
},[])
console.log(result) //["Tom", "Sue"]
profile
공부중

0개의 댓글