프론트엔드/JavaScript
자바스크립트 고차함수 - find(), findindex()
ksge7
2020. 10. 6. 15:59
find 메서드
자바스크립트 고차 함수 중에서 filter를 통해서 검색 기능을 구현할 수 있다고 했다.
그리고 배열 메서드 중 filter를 이용한 검색 기능과 비슷한 기능을 하는 메서드가 있다.
find 메서드를 이용하면 배열에서 조건에 해당하는 첫번째 값을 반환한다.
사용법은 다음과 같다.
<body>
<script>
let hero = [
{name: "헐크", age: "34"},
{name: "배트맨", age: "37"},
{name: "스파이더맨", age: "27"},
{name: "슈퍼맨", age: "39"},
{name: "아이언맨", age: "31"},
{name: "아이언맨", age: "34"},
];
let find = hero.find(function(item){
return item.name == "아이언맨";
});
// find메서드를 이용하면 배열 안에서 원하는 요소를 추출할 수 있다.
console.log(find);
// {name: "아이언맨", age: "31"} 출력
// 아이언맨 객체가 두 개지만 그중 더 앞선 순서의 객체가 출력
</script>
</body>
<body>
<script>
let hero = [
{name: "헐크", age: "34"},
{name: "배트맨", age: "37"},
{name: "스파이더맨", age: "27"},
{name: "슈퍼맨", age: "39"},
{name: "아이언맨", age: "31"},
{name: "아이언맨", age: "34"},
];
function findname(name){
return hero.find(function(item){
return item.name == name;
})
};
// find 메서드를 새로 만든 함수의 리턴값으로 설정
console.log(findname("스파이더맨"));
// {name: "스파이더맨", age: "27"} 출력
</script>
</body>
다른 배열 메서드와 마찬가지로 호출한 배열의 요소, 인덱스, 배열을 콜백함수를 통해 전달받을 수 있다.
<body>
<script>
let num = [1,2,3,4,5];
let find = num.find(function(item, index, array){
console.log("아이템:"+item+" 인덱스:"+index+" 호출배열:"+array)
});
// find의 콜백함수는 find를 호출한
// 배열 요소, 인덱스, 배열을 파라미터로 받을 수 있다.
</script>
</body>
findindex 메서드
findindex는 find와 기능이 같다. 다만 배열의 value가 아닌 인덱스 값을 넘겨준다.
<body>
<script>
let num = [1,2,3,4,5];
let num2 = num.findIndex(function(item){
return item == 5;
});
console.log(num2) // 4출력
</script>
</body>
<body>
<script>
let hero = [
{name: "헐크", age: "34"},
{name: "배트맨", age: "37"},
{name: "스파이더맨", age: "27"},
{name: "슈퍼맨", age: "39"},
{name: "아이언맨", age: "31"},
{name: "아이언맨", age: "34"},
];
let heroindex = hero.findIndex(function(item){
return item.name == "아이언맨";
});
console.log(heroindex); // 4출력
</script>
</body>
다른 배열 메서드와 마찬가지로 호출한 배열의 요소, 인덱스, 배열을 콜백함수를 통해 전달받을 수 있다.
<body>
<script>
let num = [1,2,3,4,5];
let findindex = num.findIndex(function(item, index, array){
console.log("아이템:"+item+" 인덱스:"+index+" 호출배열:"+array)
});
// findindex의 콜백함수는 find를 호출한
// 배열 요소, 인덱스, 배열을 파라미터로 받을 수 있다.
</script>
</body>