이하 내용들은 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=#아이디>로 링크된 각 문자를 클릭하면 해당 아이디를 가진 요소로 이동하는 고전적인 북마크 기능을 이용해 해당 위치로 이동하는 예제입니다.


<!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>

view raw

order.htm

hosted with ❤ by GitHub

문의 | 코멘트 또는 yoonbumtae@gmail.com


카테고리: WEB: Frontend


1개의 댓글

자바스크립트: 객체지향 2 – 상속 구현 (ES5 이하) - BGSMM · 2019년 8월 22일 2:29 오전

[…] arguments) 이 핵심입니다. apply는 이전에 작성한 글 자바스크립트: 배열 map, filter, apply + 예제: ABC(알파벳) 내비게이터 에서 설명되어 있습니다. 파라미터 this 부분은 해당 클래스 내부에서 […]

답글 남기기

Avatar placeholder

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다