Recent Posts
Recent Comments
Link
Today
Total
02-08 14:03
관리 메뉴

채린씨의 티스토리

[JavaScript] 33. 그 외 고차함수 본문

자료구조, 알고리즘/JavaScript 기초 문법

[JavaScript] 33. 그 외 고차함수

채린씨 2022. 3. 13. 21:50

* Array.forEach()

- 배열 요소 각각에 대해 콜백함수 실행: Array.forEach(function(item, index, array){})

- item: 배열 요소, index: 배열 위치, array: 배열

- 나는 이 글을 읽고서야 드디어.. 이해했다!: https://yuddomack.tistory.com/entry/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-Array-forEach

 

자바스크립트 Array forEach

이번 글에서는 자바스크립트 Array(배열) 객체의 메서드인 forEach에 대해 작성하겠습니다. forEach는 for문과 마찬가지로 반복적인 기능을 수행할 때 사용합니다. 하지만 for문처럼 index와 조건식, inc

yuddomack.tistory.com

// for문 사용 (output: 1 2 3)
let nums = [1, 2, 3];
for (let i = 0; i < nums.length; i++) {
  console.log(nums[i]);
}

// forEach 사용 (output: 1 2 3)
nums.forEach(function (i) {
  console.log(i);
});

// forEach 사용
nums.forEach(function (item, index, array) {
  console.log(`${array}의 ${index}번째 요소: ${item}`);
});
/* output:
1,2,3의 0번째 요소: 1
1,2,3의 1번째 요소: 2
1,2,3의 2번째 요소: 3
*/

 

* Array.map()

- 배열 요소 각각에 대해 콜백함수 실행, 그 결과를 배열로 반환: Array.map(function(item, index, array){})

- item: 배열 요소, index: 배열 위치, array: 배열

// for문 사용
let nums = [1, 2, 3];
let use_for_loop = []; // for 문의 결과가 저장될 배열
for (let i = 0; i < nums.length; i++) {
  use_for_loop.push(nums[i] * 2);
}
console.log(use_for_loop); // output: [ 2, 4, 6 ]

// map 사용
let use_map = nums.map(function (i) {
  return i * 2;
});
console.log(use_map); // output: [ 2, 4, 6 ]

// map 사용
let use_map2 = nums.map(function (item, index, array) {
  return `${array}의 ${index}번째 요소 ${item}에 2를 곱하면 ${item * 2}`;
});
console.log(use_map2);
/* output:
'1,2,3의 0번째 요소 1에 2를 곱하면 2',
'1,2,3의 1번째 요소 2에 2를 곱하면 4',
'1,2,3의 2번째 요소 3에 2를 곱하면 6'
*/

 

* Array.find()

- 콜백함수의 조건을 만족하는 단 하나의 값 반환: Array.find(function(item, index, array){})

- item: 배열 요소, index: 배열 위치, array: 배열

let users = [
  { name: "Alice", age: 17, job: false },
  { name: "Bob", age: 20, job: false },
  { name: "Chris", age: 27, job: true },
];

// job이 false인 유저를 한 명 찾아서 find_job에 저장
let find_job = users.find(function (user) {
  return user.job == false;
});
console.log(find_job);
// output: { name: 'Alice', age: 17, job: false }

// age가 19보다 큰 유저를 한 명 찾아서 find_age에 저장
let find_age = users.find(function (user) {
  return user.age > 19;
});
console.log(find_age);
// output: { name: 'Bob', age: 20, job: false }

// age가 15보다 작은 유저를 한 명 찾아서 find_age2에 저장
let find_age2 = users.find(function (user) {
  return user.age < 15;
});
console.log(find_age2);
// output: undefined (조건에 맞는 유저 없음)

 

* Array.filter()

- 콜백함수의 조건을 만족하는 모든 값배열로 반환: Array.filter(function(item, index, array){})

- item: 배열 요소, index: 배열 위치, array: 배열

let users = [
  { name: "Alice", age: 17, job: false },
  { name: "Bob", age: 20, job: false },
  { name: "Chris", age: 27, job: true },
];

// job이 false인 유저를 모두 찾아서 filter_job 배열에 저장
let filter_job = users.filter(function (user) {
  return user.job == false;
});
console.log(filter_job);
/* output: [
  { name: 'Alice', age: 17, job: false },
  { name: 'Bob', age: 20, job: false }
]*/

// age가 19보다 큰 유저를 모두 찾아서 filter_age에 저장
let filter_age = users.filter(function (user) {
  return user.age > 19;
});
console.log(filter_age);
/* output: [
  { name: 'Bob', age: 20, job: false },
  { name: 'Chris', age: 27, job: true }
]*/

// age가 15보다 작은 유저를 모두 찾아서 filter_age2에 저장
let filter_age2 = users.filter(function (user) {
  return user.age < 15;
});
console.log(filter_age2);
// output: [] (조건에 맞는 유저 없음)

 

* Array.reduce()

- 배열 요소 각각에 대해 콜백함수 실행, 누적 결괏값 반환: Array.reduce(function(accumulator, item, index, array){})

- accumulator: 이전 수행 결과(initial로 초기값 설정 가능), item: 배열 요소, index: 배열 위치, array: 배열

let nums = [2, 3, 4, 5, 6];

console.log("result\tvalue\tindex"); // 결과값을 보기 좋게

let sum = nums.reduce(function (accumulator, item, index, array) {
  console.log(accumulator, "\t\t", item, "\t\t", index);
  return accumulator + item;
}); // initial값을 지정하지 않으면 배열의 첫 번째 값(2)이 accumulator의 초기값이 됨
console.log(sum); // output: 20(2 + 3 + 4 + 5 + 6)

console.log("result\tvalue\tindex");
let sum2 = nums.reduce(function (accumulator, item, index, array) {
  console.log(accumulator, "\t\t", item, "\t\t", index);
  return accumulator + item;
}, 0); // initial값을 0으로 지정 (acuumulator의 초기값: 0)
console.log(sum2); // output: 20(0 + 2 + 3 + 4 + 5 + 6)

console.log("result\tvalue\tindex");
let sum3 = nums.reduce(function (accumulator, item, index, array) {
  console.log(accumulator, "\t", item, "\t\t", index);
  return accumulator + item;
}, 100); // initial값을 100으로 지정 (acuumulator의 초기값: 100)
console.log(sum3); // output: 120(100 + 2 + 3 + 4 + 5 + 6)

 

 

 

'자료구조, 알고리즘 > JavaScript 기초 문법' 카테고리의 다른 글

[JavaScript] 35. Collection  (0) 2022.03.13
[JavaScript] 34. 생성자  (0) 2022.03.13
[JavaScript] 32. 고차함수  (0) 2022.03.13
31. 배열 탐색 - 변형  (0) 2022.03.12
30. 배열 조작(!)  (0) 2022.03.12
Comments