TIL 6 | filter, concat, populating

dabin *.โ—Ÿ(หŠแ—จห‹)โ—ž.*ยท2021๋…„ 8์›” 4์ผ
0

Javascript

๋ชฉ๋ก ๋ณด๊ธฐ
6/25
post-thumbnail

filter

์กฐ๊ฑด์— ๋งž๋Š” ์š”์†Œ๋งŒ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • filter(callbackFunction, thisAgr) 2๊ฐœ์˜ ์ธ์ž๋ฅผ ๊ฐ€์ง„๋‹ค.
  • callbackFunction ์•ˆ์—์„œ 3๊ฐœ์˜ ์ธ์ž (element, index, array) ๋ฅผ ๊ฐ€์ง€๋Š”๋ฐ ์ฒซ๋ฒˆ์งธ ๋ถ€๋ถ„์ธ element ์ธ์ž๋งŒ ํ•„์ˆ˜๋กœ ์ง€์ •๋˜์–ด์•ผํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ์„ ํƒ์ ์ด๋‹ค.
//filter()์˜ ์ธ์ž์—์„œ ๋ฐ”๋กœ ํ•จ์ˆ˜ ์“ฐ๋Š” ๋ฐฉ๋ฒ•
let snacks = ['์ฝ˜์นฉ', '์ƒˆ์šฐ๊นก', '๊ฐ์ž๊นก', '๊ณ ๊ตฌ๋งˆ๊นก'];
let result = snacks.filter(snack => snack.includes('๊นก'));
console.log(result); //['์ƒˆ์šฐ๊นก', '๊ฐ์ž๊นก', '๊ณ ๊ตฌ๋งˆ๊นก']

let snacks = ['์ฝ˜์นฉ', '์ƒˆ์šฐ๊นก', '๊ฐ์ž๊นก', '๊ณ ๊ตฌ๋งˆ๊นก'];
const filterItems = (query) => {
  return snacks.filter(snack => snack.indexOf(query) > -1);
}
console.log(filterItems('๊นก')); //['์ƒˆ์šฐ๊นก', '๊ฐ์ž๊นก', '๊ณ ๊ตฌ๋งˆ๊นก']
//๋ฐ–์—์„œ ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ   filter()์ธ์ž์—์„œ call back
function aboveEighteen(number) {
  return number > 18;
}
let numbers = [1, 5, 29, 499].filter(aboveEighteen);
console.log(numbers); //[29, 499]

function isEven(number) {
  return number % 2 == 0;
}
let filtered_numbers = [1, 3, 4, 5, 24, 53].filter(isEven);
console.log(filtered_numbers); //[4, 24]
let students = [
  { id: 1, name: 'dabin', age: 25},
  { id: 2, name: 'isa', age: 27},
  { id: 3, name: 'joe', age: 28},
  { id: 4, name: 'jacob', age: 21},
];
const result = students.filter(student => student.age > 25);
console.log(result)

concat

์ฃผ์–ด์ง„ ๋ฐฐ์—ด์— ๊ธฐ์กด ๋ฐฐ์—ด์„ ํ•ฉ์ณ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์›๋ณธ ๋ฐฐ์—ด์€ ๋ณ€ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ƒˆ๋กœ์šด๋ฐฐ์—ด/์›๋ณธ๋ฐฐ์—ด ์ˆ˜์ • ์‹œ์—๋„ ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

let a = [1, 2, 3];
let b = [4, 5, 6];
let c = a.concat(b);
console.log(c);//[1, 2, 3, 4, 5, 6]

let d = [7, 8, 9];
let c = a.concat(b, d);
console.log(c);//[1, 2, 3, 4, 5, 6, 7, 8, 9]

๋ฐฐ์—ด ์•ˆ์˜ ๋ฐฐ์—ด์„ ํ•ฉ์น  ๋•Œ (1depth๋งŒ ์ ์šฉ)

let a = [1, 2];
let b = a.concat([3, 4], [5, 6]);
console.log(b) // [1, 2, 3, 4, 5, 6]

let c = a.concat(3, [4, 5, [6]]);
console.log(c) // [3, 4, 5, [6]]

filter + concat

์ค‘๋ณต์ด ์—†๋Š” ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ

let a = [1, 2, 3];
let b = [2, 3, 4, 5];
let c = a.concat(b);
console.log(c);//[1, 2, 3, 2, 3, 4, 5]

let eraseDuplicates = c.filter(el,index)=> 
c.indexOf(el)===index);
console.log(eraseDuplicates);//[1, 2, 3, 4, 5]

populating

๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ []๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์ด์™ธ์— new Array(n) ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋Š” n๊ฐœ์˜ ์š”์†Œ๋ฅผ ๊ฐ€์ง„ ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค. ๋นˆ ๋ฐฐ์—ด์ด๋‚˜ arr.length๋ฅผ ์ฐ์œผ๋ฉด 4๊ฐ€ ๋‚˜์˜จ๋‹ค. ๊ฐ’์„ ํ• ๋‹นํ•˜๋ ค๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

function makeSquare () {
  
  let arr = new Array(10)
  
  for (let i = 0; i < arr.length; i++) {
    arr[i] = i ** 2
  }
  
  return arr;
}
profile
๋ชจ๋ฅด๋Š”๊ฒƒํˆฌ์„ฑ์ด

0๊ฐœ์˜ ๋Œ“๊ธ€