웹 프론트엔드 JS 튜토리얼 Underscore.js_Others의 일반적인 메소드 요약

Underscore.js_Others의 일반적인 메소드 요약

May 16, 2016 pm 04:12 PM
일반적인 방법

개요

Underscore.js는 압축률이 4KB에 불과한 매우 간결한 라이브러리입니다. 이는 Javascript 프로그래밍을 크게 촉진하는 수십 가지 기능적 프로그래밍 방법을 제공합니다. MVC 프레임워크 backbone.js는 이 라이브러리를 기반으로 합니다.

밑줄(_) 객체를 정의하며, 함수 라이브러리의 모든 메소드가 이 객체에 속합니다. 이러한 방법은 대략 수집, 배열, 기능, 개체 및 유틸리티의 다섯 가지 범주로 나눌 수 있습니다.

node.js에 설치

Underscore.js는 브라우저 환경뿐만 아니라 node.js에서도 사용할 수 있습니다. 설치 명령은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

npm 설치 밑줄

단, node.js에서는 _를 변수명으로 직접 사용할 수 없으므로 다음 방법에서는 underscore.js를 사용합니다.
코드 복사 코드는 다음과 같습니다.

var u = require("밑줄");

컬렉션 관련 방법

Javascript 언어 데이터 수집에는 배열과 객체라는 두 가지 구조가 포함됩니다. 다음 방법은 두 구조 모두에 적용됩니다.

지도

이 메서드는 컬렉션의 각 멤버에 대해 차례로 일부 작업을 수행하고 반환된 값을 새 배열에 저장합니다.

코드 복사 코드는 다음과 같습니다.

_.map([1, 2, 3], function(num){ return num * 3; }) // [3, 6, 9] _.map({one:1, two:2, three:3 }, function(num, key){ return num * 3 }) // [3, 6, 9]

이 메서드는 컬렉션의 각 구성원에 대해 차례로 일부 작업을 수행하지만 값을 반환하지 않는 map과 유사합니다.

코드 복사 코드는 다음과 같습니다.

_.each([1, 2, 3], 경고); _.each({1:1, 2:2, 3:3}, 경고);

감소

이 메서드는 집합의 각 구성원에 대해 일종의 작업을 차례로 수행한 다음 특정 초기 값에 대한 작업 결과를 누적하고 모든 작업이 완료된 후 누적된 값을 반환합니다.

이 방법은 세 가지 매개변수를 허용합니다. 첫 번째 매개변수는 처리 중인 컬렉션, 두 번째 매개변수는 각 멤버에 대해 동작하는 함수, 세 번째 매개변수는 누적에 사용되는 변수이다.

_.reduce([1, 2, 3], function(memo, num){ return memo num; }, 0) // 6
축소 메소드의 두 번째 매개변수는 자체적으로 두 개의 매개변수를 허용하는 연산 함수입니다. 첫 번째는 누적에 사용되는 변수이고 두 번째는 집합의 각 구성원 값입니다.

필터링 및 거부

필터 메소드는 컬렉션의 각 멤버에 대해 차례로 일부 작업을 수행하고 작업 결과가 true인 멤버만 반환합니다.

코드 복사 코드는 다음과 같습니다.

_.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }) // [2, 4, 6]

Reject 메소드는 연산 결과가 false인 멤버만 반환합니다.
코드 복사 코드는 다음과 같습니다.

_.reject([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }) // [1, 3, 5]

모든 것

every 메소드는 컬렉션의 각 멤버에 대해 차례로 일부 작업을 수행합니다. 모든 멤버의 작업 결과가 true이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

코드 복사 코드는 다음과 같습니다.

_.every([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }) // false

일부 메서드는 한 멤버의 연산 결과가 true이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
코드 복사 코드는 다음과 같습니다.

_.some([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }) // true

찾기

이 메서드는 컬렉션의 각 멤버에 대해 차례로 일부 작업을 수행하고 작업 결과가 true인 첫 번째 멤버를 반환합니다. 모든 멤버의 연산 결과가 false인 경우 undefound가 반환됩니다.

코드 복사 코드는 다음과 같습니다.

_.find([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }) // 2

포함

컬렉션에 값이 있으면 이 메서드는 true를 반환하고, 그렇지 않으면 false를 반환합니다.

코드 복사 코드는 다음과 같습니다.

_.contains([1, 2, 3], 3) // true

countBy

이 메소드는 집합의 각 구성원에 대해 일종의 연산을 차례로 수행하고, 동일한 연산 결과를 갖는 구성원을 하나의 범주로 계산하고, 마지막으로 각 연산 결과에 해당하는 구성원의 수를 나타내는 객체를 반환합니다.

코드 복사 코드는 다음과 같습니다.

_.countBy([1, 2, 3, 4, 5], function(num) { return num % 2 == 0 ? 'even' : 'odd'; }) // {홀수: 3, 짝수: 2 }

셔플

이 메서드는 섞인 컬렉션을 반환합니다.

코드 복사 코드는 다음과 같습니다.

_.shuffle([1, 2, 3, 4, 5, 6]) // [4, 1, 6, 3, 5, 2]

사이즈

이 메소드는 컬렉션의 구성원 수를 반환합니다.

코드 복사 코드는 다음과 같습니다.

_.size({하나:1, 둘:2, 셋:3}) // 3

객체 관련 메서드


배열로

이 메서드는 개체를 배열로 변환합니다.

코드 복사 코드는 다음과 같습니다.

_.toArray({a:0,b:1,c:2}) // [0, 1, 2]

뽑기

여러 개체의 특정 속성 값을 배열로 추출하는 방법입니다.

코드 복사 코드는 다음과 같습니다.

var Stooges = [{이름 : 'moe', 나이 : 40}, {이름 : 'larry', 나이 : 50}, {이름 : 'curly', 나이 : 60}] _.pluck(stooges, 'name' ); // ["모에", "래리", "곱슬머리"]

기능 관련 메소드

바인딩

이 메서드는 함수 런타임 컨텍스트를 바인딩하고 이를 새 함수로 반환합니다.

코드 복사 코드는 다음과 같습니다.

_.bind(함수, 객체, [*인수])

아래 예를 참조하세요.
코드 복사 코드는 다음과 같습니다.

var o = { p: 2, m: function (){console.log(p);} o.m() // 2 _.bind(o.m,{p:1})() // 1

모두 바인딩

이 방법은 (특별히 명시하지 않는 한) 개체의 모든 메서드를 개체에 바인딩합니다.

코드 복사 코드는 다음과 같습니다.

var ButtonView = { label : 'underscore', onClick : function(){ Alert('clicked: ' this.label) }, onHover : function(){ console.log('hovering: ' this.label) } ; _.bindAll(buttonView);

일부

이 메소드 바인딩은 함수를 매개변수에 바인딩한 다음 이를 새 함수로 반환합니다.

코드 복사 코드는 다음과 같습니다.

var add = function(a, b) { return a b }; add5 = _.partial(add, 5); // 15

메모하기

이 방법은 특정 매개변수에 대한 함수의 실행 결과를 캐시합니다.

코드 복사 코드는 다음과 같습니다.

var fibonacci = _.memoize(function(n) { return n

함수에 여러 매개변수가 있는 경우 캐시를 식별하는 해시 값을 생성하려면 hashFunction을 제공해야 합니다.

지연

이 방법을 사용하면 특정 시간 동안 기능 실행을 연기할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

var log = _.bind(console.log, console); _.delay(log, 1000, '나중에 기록됨') // '나중에 기록됨'

연기

이 메서드는 setTimeout이 0초 동안 실행을 지연시키는 효과와 유사하게 실행할 작업 수가 0이 될 때까지 함수 실행을 연기할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

_.defer(function(){ 경고('지연'); });

스로틀

이 메서드는 함수의 새 버전을 반환합니다. 이 새 버전의 함수를 계속해서 호출하는 경우 다음 실행을 트리거하기 전에 일정 시간 동안 기다려야 합니다.

코드 복사 코드는 다음과 같습니다.

// updatePosition 함수의 새 버전을 반환합니다. var throttled = _.throttle(updatePosition, 100); // 함수의 새 버전은 100밀리초마다 트리거됩니다. $(window).scroll(throttled);

디바운스

이 메서드는 함수의 새 버전도 반환합니다. 이 새 버전의 함수가 호출될 때마다 이전 호출 사이에 일정한 시간이 있어야 합니다. 그렇지 않으면 유효하지 않습니다. 일반적인 응용 프로그램은 사용자가 버튼을 두 번 클릭하여 양식이 두 번 제출되는 것을 방지하는 것입니다.

코드 복사 코드는 다음과 같습니다.

$("button").on("click", _.debounce(submitForm, 1000));

한 번

이 메소드는 이 함수가 한 번만 실행될 수 있도록 새 버전의 함수를 반환합니다. 주로 객체 초기화에 사용됩니다.

코드 복사 코드는 다음과 같습니다.

var 초기화 = _.once(createApplication); 초기화(); 초기화(); // 애플리케이션은 한 번만 생성됩니다

이후

이 메서드는 새로운 버전의 함수를 반환합니다. 이 함수는 특정 횟수만큼 호출된 후에만 실행됩니다. 주로 일련의 작업이 반응하기 전에 완료되었는지 확인하는 데 사용됩니다.

코드 복사 코드는 다음과 같습니다.

var renderNotes = _.after(notes.length, render); _.each(notes, function(note) { note.asyncSave({success: renderNotes}); }) // 모든 노트가 저장된 후 renderNote 한 번만 실행

포장

이 메소드는 함수를 매개변수로 사용하여 이를 다른 함수에 전달한 후 마지막으로 이전 버전의 새 버전을 반환합니다.

코드 복사 코드는 다음과 같습니다.

var hello = function(name) { return "hello: " name; }; hello = _.wrap(hello, function(func) { return "before, " func("moe") ", after"; }); (); // '전, 안녕하세요: 모에, 후'

작곡

이 방법은 일련의 함수를 매개변수로 받아 뒤에서 앞으로 순서대로 실행합니다. 이전 함수의 실행 결과는 다음 함수의 실행 매개변수로 사용됩니다. 즉, f(g(),h()) 형식을 f(g(h()))로 변환합니다.

코드 복사 코드는 다음과 같습니다.

var Greeting = function(name){ return "hi: " name; var exclaim = function(statement){ return 문 "!" }; ); // '안녕하세요: 모에!'

도구 방법

템플릿

이 방법은 HTML 템플릿을 컴파일하는 데 사용됩니다. 세 가지 매개변수를 허용합니다.

코드 복사 코드는 다음과 같습니다.

_.template(templateString, [데이터], [설정])

세 가지 매개변수의 의미는 다음과 같습니다.

templateString: 템플릿 문자열
데이터: 입력 템플릿 데이터
설정: 설정

templateString

템플릿 문자열 templateString은 변수가 <%= ... %>; 형식으로 삽입되는 일반 HTML 언어입니다. 변수의 값을 제공하는 역할을 하는 데이터 개체입니다.

코드 복사 코드는 다음과 같습니다.

var txt = "

<%= 단어 %>

코드 복사 코드는 다음과 같습니다.

"; _.template(txt, {word : "Hello World"}) // "

안녕하세요

코드 복사 코드는 다음과 같습니다.

"

변수 값에 5개의 특수 문자(& < > " ' /)가 포함된 경우 <%- … %>로 이스케이프 처리해야 합니다.
코드 복사 코드는 다음과 같습니다.

var txt = "

<%- 단어 %>
코드 복사 코드는 다음과 같습니다.

"; _.template(txt, {word : "H & W"}) //

H&W

JavaScript 명령은 <% … %> 형식으로 삽입할 수 있습니다. 다음은 판결문의 예시입니다.

코드 복사 코드는 다음과 같습니다.

var txt = "<% var i = 0; if (i<1){ %>" "<% } %>"; word : "Hello World"}) // Hello World

일반적인 사용법에는 루프 문이 포함됩니다.
코드 복사 코드는 다음과 같습니다.

var list = "<% _.each(사람, 함수(이름) { %>

<%= 이름 %> <% }); %>" _.template(list, {people: ['moe', 'curly', 'larry']}); 모에
곱슬
래리”
템플릿 메소드에 첫 번째 매개변수인 templateString만 있고 두 번째 매개변수가 생략된 경우 함수가 반환되며 나중에 이 함수에 데이터를 입력할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
var t1 = _.template("안녕하세요 <%=user%>!") t1({ user: "" }) // '안녕하세요!'

데이터

templateString의 모든 변수는 내부적으로 obj 객체의 속성이며, obj 객체는 두 번째 매개변수 데이터 객체를 참조합니다. 다음 두 명령문은 동일합니다.


코드 복사 코드는 다음과 같습니다.
_.template("안녕하세요 <%=user%>!", { 사용자: "" }) _.template("안녕하세요 <%=obj.user%>!", { 사용자: "" })

obj 객체의 이름을 변경하려면 세 번째 매개변수에 설정해야 합니다.

코드 복사 코드는 다음과 같습니다.
_.template("<%if (data.title) { %>Title: <%= title %><% } %>", null,        { 변수: "data" });

템플릿은 변수를 교체할 때 내부적으로 with 문을 사용하기 때문에 위의 접근 방식이 더 빠르게 실행됩니다.
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

프론트 엔드 열 용지 영수증에 대한 차량 코드 인쇄를 만나면 어떻게해야합니까? 프론트 엔드 열 용지 영수증에 대한 차량 코드 인쇄를 만나면 어떻게해야합니까? Apr 04, 2025 pm 02:42 PM

프론트 엔드 개발시 프론트 엔드 열지대 티켓 인쇄를위한 자주 묻는 질문과 솔루션, 티켓 인쇄는 일반적인 요구 사항입니다. 그러나 많은 개발자들이 구현하고 있습니다 ...

Demystifying JavaScript : 그것이하는 일과 중요한 이유 Demystifying JavaScript : 그것이하는 일과 중요한 이유 Apr 09, 2025 am 12:07 AM

JavaScript는 현대 웹 개발의 초석이며 주요 기능에는 이벤트 중심 프로그래밍, 동적 컨텐츠 생성 및 비동기 프로그래밍이 포함됩니다. 1) 이벤트 중심 프로그래밍을 사용하면 사용자 작업에 따라 웹 페이지가 동적으로 변경 될 수 있습니다. 2) 동적 컨텐츠 생성을 사용하면 조건에 따라 페이지 컨텐츠를 조정할 수 있습니다. 3) 비동기 프로그래밍은 사용자 인터페이스가 차단되지 않도록합니다. JavaScript는 웹 상호 작용, 단일 페이지 응용 프로그램 및 서버 측 개발에 널리 사용되며 사용자 경험 및 크로스 플랫폼 개발의 유연성을 크게 향상시킵니다.

누가 더 많은 파이썬이나 자바 스크립트를 지불합니까? 누가 더 많은 파이썬이나 자바 스크립트를 지불합니까? Apr 04, 2025 am 12:09 AM

기술 및 산업 요구에 따라 Python 및 JavaScript 개발자에 대한 절대 급여는 없습니다. 1. 파이썬은 데이터 과학 및 기계 학습에서 더 많은 비용을 지불 할 수 있습니다. 2. JavaScript는 프론트 엔드 및 풀 스택 개발에 큰 수요가 있으며 급여도 상당합니다. 3. 영향 요인에는 경험, 지리적 위치, 회사 규모 및 특정 기술이 포함됩니다.

JavaScript를 사용하여 동일한 ID와 동일한 ID로 배열 요소를 하나의 객체로 병합하는 방법은 무엇입니까? JavaScript를 사용하여 동일한 ID와 동일한 ID로 배열 요소를 하나의 객체로 병합하는 방법은 무엇입니까? Apr 04, 2025 pm 05:09 PM

동일한 ID로 배열 요소를 JavaScript의 하나의 객체로 병합하는 방법은 무엇입니까? 데이터를 처리 할 때 종종 동일한 ID를 가질 필요가 있습니다 ...

JavaScript는 배우기가 어렵습니까? JavaScript는 배우기가 어렵습니까? Apr 03, 2025 am 12:20 AM

JavaScript를 배우는 것은 어렵지 않지만 어려운 일입니다. 1) 변수, 데이터 유형, 기능 등과 같은 기본 개념을 이해합니다. 2) 마스터 비동기 프로그래밍 및 이벤트 루프를 통해이를 구현하십시오. 3) DOM 운영을 사용하고 비동기 요청을 처리합니다. 4) 일반적인 실수를 피하고 디버깅 기술을 사용하십시오. 5) 성능을 최적화하고 모범 사례를 따르십시오.

Shiseido의 공식 웹 사이트와 같은 시차 스크롤 및 요소 애니메이션 효과를 달성하는 방법은 무엇입니까?
또는:
Shiseido의 공식 웹 사이트와 같은 페이지 스크롤과 함께 애니메이션 효과를 어떻게 달성 할 수 있습니까? Shiseido의 공식 웹 사이트와 같은 시차 스크롤 및 요소 애니메이션 효과를 달성하는 방법은 무엇입니까? 또는: Shiseido의 공식 웹 사이트와 같은 페이지 스크롤과 함께 애니메이션 효과를 어떻게 달성 할 수 있습니까? Apr 04, 2025 pm 05:36 PM

이 기사에서 시차 스크롤 및 요소 애니메이션 효과 실현에 대한 토론은 Shiseido 공식 웹 사이트 (https://www.shiseido.co.jp/sb/wonderland/)와 유사하게 달성하는 방법을 살펴볼 것입니다.

Console.log 출력 결과의 차이 : 두 통화가 다른 이유는 무엇입니까? Console.log 출력 결과의 차이 : 두 통화가 다른 이유는 무엇입니까? Apr 04, 2025 pm 05:12 PM

Console.log 출력의 차이의 근본 원인에 대한 심층적 인 논의. 이 기사에서는 Console.log 함수의 출력 결과의 차이점을 코드에서 분석하고 그에 따른 이유를 설명합니다. � ...

프론트 엔드 개발에서 VSCODE와 유사한 패널 드래그 앤 드롭 조정 기능을 구현하는 방법은 무엇입니까? 프론트 엔드 개발에서 VSCODE와 유사한 패널 드래그 앤 드롭 조정 기능을 구현하는 방법은 무엇입니까? Apr 04, 2025 pm 02:06 PM

프론트 엔드에서 VSCODE와 같은 패널 드래그 앤 드롭 조정 기능의 구현을 탐색하십시오. 프론트 엔드 개발에서 VSCODE와 같은 구현 방법 ...

See all articles