>  기사  >  웹 프론트엔드  >  js 데이터 구조 유형 확장 immutable-js 사용 소개(코드 예)

js 데이터 구조 유형 확장 immutable-js 사용 소개(코드 예)

不言
不言원래의
2018-09-17 14:43:282025검색

이 기사는 js 데이터 구조 유형 확장 immutable-js(코드 예제)의 사용에 대한 소개를 제공합니다. 이는 특정 참조 값을 가지고 있으므로 도움이 될 수 있습니다.

java, .net 등의 강력한 형식의 언어와 비교할 때 js와 js의 큰 차이점 중 하나는 데이터 구조가 배열과 객체일 뿐이고 모두 동적으로 가변적이라는 점입니다. 반면 java는 List, 설정 및 매핑. 따라서 js에서는 이러한 데이터 구조를 사용하기 위해 immutable-js가 탄생했습니다.

1. immutable-js

immutable-js는 JavaScript의 불변 컬렉션, 즉 일단 생성되면 변경할 수 없는 데이터 유형을 확장합니다. 이를 통해 애플리케이션 개발, 무방비 복제가 단순화되고, 고급 메모리 체계가 활성화되며, 더 간단한 논리를 사용하여 업데이트를 확인합니다. 영구 데이터는 데이터를 제자리에서 업데이트하지 않지만 새로 업데이트된 데이터를 생성하는 수정 가능한 API를 제공합니다.

2. 제공되는 데이터 유형

1. 목록: JavaScript의 배열과 유사

2. 맵: 순서가 지정되지 않은 키-값 쌍((키, 값) 쌍) 컬렉션

3.

4. 세트: 중복 값이 ​​없는 컬렉션

5. OrderedSet: 순서가 지정된 세트

6. 스택: 요소 추가 및 제거를 지원하는 인덱스 세트

7. Seq.Indexed 컬렉션은 단계 크기로 채워집니다. start의 기본값은 0이고, step의 기본값은 1이며, end의 기본값은 무한대입니다. start = end이면 빈 컬렉션이 반환됩니다.

8. Repeat(): 값을 여러 번 반복하는 Seq.Indexed 컬렉션을 반환합니다. 시간이 정의되지 않은 경우 무한 값 값의 Seq 컬렉션을 반환합니다.

9. Record: JavaScript의 Object와 유사하지만 특정 문자열만 키로 받고 기본값을 갖습니다. ​

10. Seq: 상위 수집 기능(예: 맵, 필터)을 통과하지 않고 효율적으로 연결할 수 있습니다. 중간 컬렉션

11. 컬렉션: 모든 데이터 구조의 기본 클래스

3. API 제공

3.1 fromJS: js 데이터를 immutable-js 유형 데이터로 변환

const { fromJS, isKeyed } = require('immutable@4.0.0-rc.9');
fromJS({ a: {b: [10, 20, 30]}, c: 40}, function (key, value, path) {
  console.log(key, value, path)
  return isKeyed(value) ? value.toOrderedMap() : value.toList()
})

> "b", [ 10, 20, 30 ], [ "a", "b" ]
> "a", {b: [10, 20, 30]}, [ "a" ]
> "", {a: {b: [10, 20, 30]}, c: 40}, []

3.2는 다음과 같습니다. 두 개체를 비교해보세요

const { Map, is } = require('immutable@4.0.0-rc.9')
const map1 = Map({ a: 1, b: 1, c: 1 })
const map2 = Map({ a: 1, b: 1, c: 1 })
assert.equal(map1 !== map2, true)
assert.equal(Object.is(map1, map2), false)
assert.equal(is(map1, map2), true)

위 내용은 js 데이터 구조 유형 확장 immutable-js 사용 소개(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.