이하 내용들은 ES6 이상을 지원하지 않는 브라우저에서는 작동되지 않을 수도 있습니다.
Array.prototype.map
배열을 순회합니다.
var numbers = [1, 4, 9]; var roots = numbers.map(function(num) { return Math.sqrt(num) }); // roots is now [1, 2, 3] // numbers is still [1, 4, 9]
Array.prototype.filter
특정 조건을 만족하는 배열만 솎아냅니다.
var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present']; const result = words.filter(word => word.length > 6); console.log(result); // expected output: Array ["exuberant", "destruction", "present"]
Function.prototype.apply
파라미터를 여러 개 가지는 함수에서 파라미터를 배열(또는 유사배열)로 대신 사용할 수 있도록 하는 기능입니다. (MDN 링크)
var numbers = [5, 6, 2, 3, 7]; // 일반 방식 var max = Math.max(numbers[0], numbers[1], ..., numbers[4]); // apply를 이용한 방식 var max = Math.max.apply(null, numbers);
예제 (JQuery 포함)
알파벳으로 구성된 내비게이터를 생성한 뒤 <a href=#아이디>
로 링크된 각 문자를 클릭하면 해당 아이디를 가진 요소로 이동하는 고전적인 북마크 기능을 이용해 해당 위치로 이동하는 예제입니다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang="ko"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>Names</title> | |
</head> | |
<style> | |
#abc-nav { | |
position: fixed; | |
right: 10px; | |
top: 10px; | |
} | |
#abc-nav a { | |
display: block; | |
} | |
</style> | |
<body> | |
<div> | |
<table> | |
<thead> | |
<tr> | |
<th>Name</th> | |
</tr> | |
</thead> | |
<tbody id=name-list> | |
</tbody> | |
</table> | |
</div> | |
<div id="abc-nav"> | |
</div> | |
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> | |
<script> | |
// 0. 예제 목록 만들기 | |
$.get("https://raw.githubusercontent.com/dominictarr/random-name/master/names.json", {}, res => { | |
res = JSON.parse(res) | |
const nameArr = res.filter((x, i) => i % 5 === 0) | |
console.log(nameArr) | |
for (let name of nameArr) { | |
$("#name-list").append(`<tr class='name'><td>${name}</td></tr>`) | |
} | |
// 1. 내비게이터 아이디 부여 (문자 그룹 중 제일 첫 번째 요소에) | |
const rows = $("#name-list .name") | |
let firstLetter = '' | |
rows.each((i, v) => { | |
const innerFirstLetter = $(v).text().trim().charAt(0).toUpperCase() | |
if (firstLetter != innerFirstLetter) { | |
firstLetter = innerFirstLetter | |
$(v).attr("id", "this-is-" + innerFirstLetter) | |
} | |
}) | |
// 2. ABC 내비게이터 만들기 | |
const abcArr = Array.apply(null, { | |
length: 26 | |
}).map((x, i) => String.fromCharCode(65 + i)) | |
for (let x of abcArr) { | |
$("#abc-nav").append(`<a href='#this-is-${x}'>${x}</a>`) | |
} | |
}) | |
</script> | |
</body> | |
</html> |
1개의 댓글
자바스크립트: 객체지향 2 – 상속 구현 (ES5 이하) - BGSMM · 2019년 8월 22일 2:29 오전
[…] arguments) 이 핵심입니다. apply는 이전에 작성한 글 자바스크립트: 배열 map, filter, apply + 예제: ABC(알파벳) 내비게이터 에서 설명되어 있습니다. 파라미터 this 부분은 해당 클래스 내부에서 […]