조건에 맞는 값을 찾아서 새로운 배열에 담아준다.
const number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
//콜백함수의 return값이 true인 경우에만 그 값을 모아서 새로운 배열로 만듦
const isEven = number.filter( item => item%2===0);
console.log(isEven) // [2, 4, 6, 8, 10, 12, 14];
//점수에 맞는 영화를 뽑아옴
const movie = [
{
name: "heh1",
rating: 96,
},
{
name: "heh2",
rating: 90,
},
{
name: "heh3",
rating: 70,
},
{
name: "heh4",
rating: 100,
},
{
name: "heh5",
rating: 70,
},
{
name: "heh6",
rating: 60,
},
];
let higherRating = movie.filter(obj=>obj.rating>70);
console.log(higherRating)
/*
[
{ name: "heh1", rating: 96 },
{ name: "heh2", rating: 90 },
{ name: "heh4", rating: 100 },
];
*/
//map과 filter의 결합
// 90점이 넘는 영화의 제목을 가지고 오려면 filter를 해준 뒤에 map을 해준다.
let higherRatingMovieName = higherRating.map(item=>item.name);
console.log(higherRatingMovieName);
//이렇게 한줄로도 가능
let higherRating2 = movie.filter((obj) => obj.rating>90).map(item=>item.name);
console.log(higherRating2)
let UserNames = ['hello', 'hellooo', 'helllllooooo', 'hellllo'];
/**
*
arrow function으로 validUserNames 함수는
arr를 parameter로 저장하고 그 전달받은 parameter값의 filter를 해서
item의 길이가 10보다 작은 값만 반환해서 배열을 만들어주는 함수.
*/
let validUserNames = arr => arr.filter(item => item.length<10);
let lessThanTen = validUserNames(UserNames)
console.log(lessThanTen) //[ 'hello', 'hellooo', 'hellllo' ]