Cute Blinking Unicorn

서버/Node.js

filter, map, reduce 함수, 재귀함수 등 코드 작성

민밥통 2023. 11. 22. 16:28

JSON이란?

JSON이란, 자바스크립트 오브젝트 노테이션의 약자

 

{ } 중괄호 쓴다면 뭘 쓰겠다는 뜻인가?

콤마 원소, 콤마 원소가 들어간다.

리스트랑 동일하다

{ ㅇ, ㅇ, ㅇ{

key:값

리스트에서는 값만 들어간다. 

리스트명, 인덱스 위치를 알아둬야 애가 빠져 나와. 

키를 불러

 

key는 분류기호라고 보면 된다.

조를 부르면 뒤에 속해있던 조 1,2,3,4 의 값들이 한꺼번에 같이 나오겠다는 뜻

값을 부르면 키가 딸려나오진 않는다. 

데이터에이스에서 중요하다.  

 


filter() 

특정 조건을 만족하는 배열의 요소만을 찾아서 새로운 배열로 반환합니다. 

배열을 다룰 때 많이 사용하는 내장 함수이다. 

특정 조건을 만족하는 데이터만 추출해내는 프로그램을 구현해야하는 경우가 많음. 

이때,  filter() 함수 기능을 잘 사용하면 코드를 매우 효율적으로 작성할 수 있다.

let persons = [{
  name: "유재석",
  point: 78,
  city: "서울"
},
{
  name:"김종국",
  point: 92,
  city: "서울"
},
{
  name: "양세찬",
  point: 76,
  city:"제주"
},
{
  name: "하하",
  point: 81,
  city:"서울"
}
];

let pass = persons.filter(function (person) { 
  return person.point >= 80;
});

console.log(pass);

 

const students = [
  {name: 'minji', age: 25, math: 85, english: 87},
  {name: 'sungyeon', age: 26, math: 95, english: 97},
  {name: 'jimin', age: 28, math: 76, english: 84},
  {name: 'subsu', age: 24, math: 84, english: 73},
  {name: 'dasom', age: 31, math: 54, english: 67},
  {name: 'yunsu', age: 29, math: 34, english: 100},
];

const mathUpper80 = students.filter(student => student.math > 80);
const mathUpper90AndEnglishUpper70 = students
 .filter(student => student.math > 90 && student.english > 70);

 console.log('mathUpper:', mathUpper80);
 console.log('mathUpper90AndEnglishUpper70:', mathUpper90AndEnglishUpper70);

.key 값 활용하기

const user = {}; //user안에 user.name 을 통해서 정보가 들어간다
user.name = 'minji';
user.age = 25;

console.log("유저1: " ,user);

const user2 = { name: 'kyeongrok', age: 31 }; //중괄호 안에 한줄로 정보 입력 가능
console.log(user2);
console.log('user2:', user2);
console.log('user2.name:', user2.name);
console.log('user2.age:', user2.age);

user2.job = 'developer';
user2.nation = 'korea';
console.log(user2);

const memberName = 'age';
console.log(user2[memberName]);
유저1:  { name: 'minji', age: 25 }
{ name: 'kyeongrok', age: 31 }
user2: { name: 'kyeongrok', age: 31 }
user2.name: kyeongrok
user2.age: 31
{ name: 'kyeongrok', age: 31, job: 'developer', nation: 'korea' }
31

sort() 활용법( fucntion 과 함께 활용 )


let b = [40,7,2,9,10];
// let a = b.sort(); //정렬
b.sort(function(a, b){return a - b}); // 제대로 정렬이 됨
console.log(b);
// let c = a.reverse(); //역으로 보냄

// console.log(a);
[ 2, 7, 9, 10, 40 ]

 


map() 활용

let userList = [{
  firstName: "재석",
  lastName: "유",
  email: "yu@gmail.com"
},
{
  firstName: "종국",
  lastName: "김",
  email: "kim@gmail.com"
},
{
  firstName: "세찬",
  lastName: "양",
  email: "yung@gmail.com"
},
{
  firstName: "석진",
  lastName: "지",
  email: "ji@gmail.com"
}
];

let userList2 = userList.map(function (user) {
  return {
    fullName: user.lastName + user.firstName,
    firstName: user.firstName,
    lastName: user.lastName,
    email: user.email
  }
}
);

console.log(userList2);
[
  {
    fullName: '유재석',
    firstName: '재석',
    lastName: '유',
    email: 'yu@gmail.com'
  },
  {
    fullName: '김종국',
    firstName: '종국',
    lastName: '김',
    email: 'kim@gmail.com'
  },
  {
    fullName: '양세찬',
    firstName: '세찬',
    lastName: '양',
    email: 'yung@gmail.com'
  },
  {
    fullName: '지석진',
    firstName: '석진',
    lastName: '지',
    email: 'ji@gmail.com'
  }
]

const listEmployee = [
  { name: 'minji', age: 25, salary: 4000},
  {name: 'mzznzz', age: 26, salary: 5500},
  {name: 'mizzi', age: 27, salary: 6000},
];
//연봉을 10%씩 올려본다.
const raisedSalaryList = listEmployee.map(employee => (employee.salary * 1.1));
raisedSalaryList.forEach(salary => console.log('salary: %d', salary));

연봉을 10%씩 올리는 map 활용


class 상속 61페이지 참고

ㄴthis - 자기 자신을 가리킨다.


재귀함수란?

특정 조건이 만족할 때까지 실행한 결과를 다시 한 번 자신한테 넘겨주면서 자신을 다시 호출하는 함수이다.

끝내는 조건을 잘 지정해주지 않으면 멈추지 않고 계속 실행되기 때문에 여러번 연습한 후에 사용하는 게 좋다.

//재귀함수 1~n까지 더하기
//for 1~n까지 더하기

var sum = 0;
for (let i = 0; i < 11; i++) {
  sum += i;
};
console.log(sum); //55

일단 for문으로 1~n 누적합의 결과를 본 후 재귀함수를 활용

//재귀함수 1~n까지 더하기

//시작값, 끝나는 값, 연산 결과 저장값 3개의 파라미터를 갖는 sumNumber 함수선언
const sumNumber = (start, end, accumulator) => {
  //첫번째 start가 두번째 파라미터end보다 클 경우 accmulator를 리턴하고,
  if (start > end) return accumulator;
    //  그렇지 않을 경우 sumNumber(start + 1, end, accumulator + start) 누적 시킨다. 를 리턴한다.
  return sumNumber(start + 1, end, accumulator + start);
};

console.log('result:', sumNumber(1, 10, 0)); //55

start가 end보다 클 때까지 return하여서 계속 자기 자신에게 호출하면서

끝내는 조건까지 계속해서 실행한다.


filter, map, reduce 함수를 동시에 쓰는 법

//filter, map, reduce 함수 예제

//students 배열에 대해 3개의 json객체를 담고 있다.
const students = [
  { name: 'minji', age: 31, score: 85},
  { name: 'jihyun', age: 31, score: 95},
  { name: 'minsup', age: 35, score: 76},
];

//점수가 80점 이상인 학생 필터링하기
//filter함수는 students.score > 80 , score 80을 초과하는 경우만 필터링하여 넘김
//map함수는 score값만 가져와 새로운 배열을 리턴 [85, 95] 형태의 배열
//reduce 함수는 배열 원소의 합을 리턴 upper80StudentsSum에 초기화 된다.

const upper80StudentsSum = students
 .filter(students => students.score > 80)
 .map(student => student.score)
 .reduce((a,b) => (a + b));

 console.log('sum: ', upper80StudentsSum); //180

주제는 잘 모르겠지만 코드 작성한 것

초보자를 위한 49페이지

JSON이란 부분

const user = {}; //user안에 user.name 을 통해서 정보가 들어간다
user.name = 'minji';
user.age = 25;

console.log("유저1: " ,user);

const user2 = { name: 'kyeongrok', age: 31 }; //중괄호 안에 한줄로 정보 입력 가능
console.log(user2);
console.log('user2:', user2);
console.log('user2.name:', user2.name);
console.log('user2.age:', user2.age);

user2.job = 'developer';
user2.nation = 'korea';
console.log(user2);

const memberName = 'age';
console.log(user2[memberName]);

107페이지인지 1 07번인지 몰겟음

화살표함수에 대한 구문

const printHello = () =>
  console.log('Hello'); // 중괄호를 쓰지 않아도 됨

const printHello2 = () => 'hello2'; // hello를 리턴한다.

const printMessage = message => console.log(message);
const plus = (a, b) => a + b;
const minus = (a, b) => a - b;

printHello();
console.log(printHello2());
printMessage('message');
console.log('plus : %d', plus(10, 20));
console.log('minus : %d', minus(10, 20));



72페이지부터 147페이지까지 읽어 와달라 ( 교수님 바램 )

'서버 > Node.js' 카테고리의 다른 글

Packet Tracer  (0) 2023.12.13
포스트랑 비주얼 연동!  (0) 2023.12.06
모듈 활용하기  (0) 2023.11.29
노드 미니프로젝트 평가  (0) 2023.11.22
파일질라 및 구구단 한 것  (0) 2023.11.08