본문 바로가기

JS

#자바스크립트 스터디 6 - 배열메소드2

 

arr.sort()

*정렬할 때 문자열로 취급하기 떄문에, 숫자가 들어가면 이상하게 정렬된다. 

숫자를 정렬하기 위해서는 아래와 같이 정렬이 필요함

//arr.sort() 배열 재정렬, 배열 자체가 정렬됨
// 인수로 정렬 로직을 담은 함수를 받음 

let arr = [27,8,5,13];

arr.sort((a,b)=>{
    console.log(a,b);
    return a-b;
});

//원본기준 정렬 로직 이해
//8,27 : 8,27,5,13
//5,8 : 5,8,27,13
//13,5 : 5,8,27,13
//13,8 : 5,8,27,13
//13,27 : 5,8,13,27 정렬완료


console.log(arr);

ㄴ a와 b를 비교해서 양수가 나오는지, 음수가 나오는지 확인하여 정렬 내부 로직이 작동함

 

 

_.sortBy(arr);

함수를 만들어 사용하기보다는

Lodash를 만들어서 사용한다. 

어떤 로직이 들어있는지 신경 안써도 되고 숫자, 문자, 객체 등 원하는 기준으로 정렬한다. 

실무에서 많이 사용한다. 

 

https://lodash.com/

 

Lodash

_.defaults({ 'a': 1 }, { 'a': 3, 'b': 2 });_.partition([1, 2, 3, 4], n => n % 2);DownloadLodash is released under the MIT license & supports modern environments. Review the build differences & pick one that’s right for you.InstallationIn

lodash.com

 

※사용법 참고 (블로그)

https://dc2348.tistory.com/24

 

[Lodash] Lodash란? Lodash 사용 사례 및 설치 방법 소개

안녕하세요. 최근에 프로젝트를 진행하면서, Lodash 함수를 많이 사용하게 되어서 이번 기회를 통해 Lodash 라이브러리에 대해 정리를 해보려고 해요. Lodash 카테고리를 새로 추가하였는데, 이번 글

dc2348.tistory.com

 

Lodash 사용해보기 실습 VSC 환경에서

 

//Lodash 사용해보기
var _ = require('lodash');

let arr = [
    {name : "Mike", age : 30},
    {name : "Jane", age : 20},
    {name : "Soo", age : 10},
    {name : "Soo", age : 15},
];

 const result = _.sortBy(arr, 'age');
 console.log(result);

이렇게 되면 소팅이 잘 동작한다..

여러 블로그 보다가 해봤는데 var _ = require('lodash') 를 작성하니 동작했다. 

Node.js 환경에서 사용할 때 방법이라는데 이게 Node.js 환경인지... 뭔지... 잘 모르겠는 왕초보

너무 어렵다 (?)

 

 

 

arr.reduce() : 배열의 모든 수 합치기

 

*reduce 없을 때 

//arr.reduce() : 배열의 모든수 합치기

let arr = [27,8,5,13];

//for, for of, forEach, 

let result = 0;
arr.forEach(num => {
    result += num;
});

console.log(result);

 

//arr.reduce() : 배열의 모든수 합치기

let arr = [1,2,3,4,5];

//for, for of, forEach, 

const result = arr.reduce((prev, cur) => {
    return prev+cur;
}, 0);
//reduce 는 함수를 인자로 받는데, 이전(현재까지 더해진 값) + 현재값 더해준다. 
//초기값은 0으로 준다.<-optional함

console.log(result);

 

prev는 이전 까지 더해진 값, cur은 현재값

 

실습1. arr.reduce() 로 성인 이름만 추출하기

//arr.reduce() , 인수를 함수로 받음

//성인만 뽑아서 새로운 배열 만들기

let userList = [
    {name : "Mike", age : 30},
    {name : "Tom", age : 10},
    {name : "Jane", age : 27},
    {name : "Harry", age : 26},
    {name : "Steve", age : 3},
];

let result = userList.reduce((prev, cur)=>{
    if(cur.age > 19){
        prev.push(cur.name);
    }
    return prev;
}, []);

console.log(result);

 

 

실습2. arr.reduce() 이용하여 나이 모두 더하기 

//arr.reduce() , 인수를 함수로 받음

//나이 모두 더하기 

let userList = [
    {name : "Mike", age : 30},
    {name : "Tom", age : 10},
    {name : "Jane", age : 27},
    {name : "Harry", age : 26},
    {name : "Steve", age : 3},
];

let result = userList.reduce((prev, cur)=>{
    prev += cur.age;
    return prev;
},0);

console.log(result);