새로운 배열 메소드: 1. 배열 유사 객체 또는 반복 가능한 객체를 실제 배열로 변환할 수 있는 from() 2. 일련의 값을 배열로 변환할 수 있는 of(), 이는 단점을 보완합니다. 배열 생성자 Array() 3. find() 및 findIndex(), 조건을 충족하는 첫 번째 배열 요소를 반환합니다. 4. fill() 등.
VUE3.0을 빠르게 시작하는 방법:
이 튜토리얼의 운영 환경인 Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터로 들어갑니다.
1. Array.from()
Array.from 메소드는 두 가지 유형의 객체를 실제 배열로 변환하는 데 사용됩니다:
배열과 유사한 객체와
반복 가능한 객체(ES6 new 데이터 구조 Set 및 Map 포함)
는 Iterator 인터페이스의 데이터 구조가 배포됨에 따라 Array.from은 이를 배열로 변환할 수 있습니다.
실제 개발에서는 일반적으로 DOM 작업에서 반환된 NodeList 컬렉션과 함수 내부의 인수를 변환하는 데 사용할 수 있습니다. 객체가
매개변수를 전달하면 중복을 제거하기 위해 클래스 배열을 실제 배열 배열로 변환하는 데 사용됩니다
.
const arr = [1,2,3,3,3,2,5]; console.log(Array.from(new Set(arr))) //[1,2,3,5] //...동일한 효과를 얻을 수도 있습니다. console.log([...new Set(arr)]) //[1,2,3,5]
이 메서드를 배포하지 않는 브라우저의 경우 다음을 사용할 수 있습니다.
cosnt대신 Array.prototype.slice 메소드
toArray = (() => { Array.from ? Array.from : obj => [].slice.call(obj) })()는
두 번째 매개변수를 받을 수도 있습니다. 이 매개변수는 함수에 전달되어 map 메소드와 유사한 효과를 얻고, 각 요소를 처리하고 처리된 배열을 반환합니다.
Array.from([1,2,3 ], item => 항목 *2) //[2,4,6]
반환된 문자열의 길이를
사용하여 문자열을 배열로 변환한 다음 문자열의 길이를 반환할 수 있습니다. 다양한 유니코드 문자를 올바르게 처리할 수 있기 때문입니다. /uFFFF보다 큰 유니코드 문자를 2자로 계산하는 JS 자체 버그
function countLength(string) { return Array.from(string).length }
2. Array.of()
Array.of 메소드는 일련의 값을 배열로 변환하는 데 사용됩니다. 배열 생성자 Array()의 단점을 보완합니다. 매개변수 개수가 다르기 때문에 Array()의 동작도 달라집니다.
//다음 코드는 차이점을 보여줍니다. Array.of(3) // [3] Array.of(3, 11, 8) // [3,11,8] 새로운 배열(3); // [, , ,] 새로운 배열(3, 11, 8); // [3, 11, 8] //Array.of 메서드는 다음 코드로 시뮬레이션할 수 있습니다. 함수 ArrayOf() { return [].slice.call(인수); }
3. 배열 인스턴스의 Find() 및 findIndex()는
조건
을 충족하는 첫 번째 배열 구성원을 반환합니다. 해당 매개 변수는 콜백 함수입니다. 모든 배열 구성원은 조건을 충족하는 첫 번째 항목까지 이 함수를 실행합니다. 조건을 만족하는 멤버가 없으면 정의되지 않은 값을 반환합니다.
이 메서드의 콜백 함수는 현재 값, 현재 위치, 원본 배열
예제 1
[1,12,4]을 받습니다.
,0,5] .find((item,index, arr) => return item < 1) // 0
예시 2
// find() var item = [1, 4, -5, 10].find(n => n < 0); console.log(항목); // -5 // find는 이런 종류의 복잡한 검색도 지원합니다. var points = [ { x: 10, y: 20 }, { 엑스: 20, 예: 30 }, { x: 30, 예: 40 }, { 엑스: 40, y: 50 }, { x: 50, y: 60 } ]; points.find(함수 matcher(point) { return point.x % 3 == 0 && point.y % 4 == 0; }); // { x: 30, y: 40 }
findIndex()
의 작성 및 사용법은기본적으로 find() 메소드와 동일합니다. 조건에 맞는 첫 번째 배열 멤버의 위치를 반환합니다. 값이 없으면 -1을 반환합니다.
예시 1
[1 ,2,4,15,0].findIndex((item, index,arr) => return item > 10) //3예
2
var points = [ { x: 10, y: 20 }, { 엑스: 20, 예: 30 }, { x: 30, 예: 40 }, { 엑스: 40, y: 50 }, { x: 50, y: 60 } ]; points.findIndex(함수 matcher(point) { return point.x % 3 == 0 && point.y % 4 == 0; }); // 2 points.findIndex(함수 matcher(point) { return point.x % 6 == 0 && point.y % 7 == 0; }); //1
4. 배열 인스턴스의 fill(
// 채우기 메소드는 주어진 값으로 배열을 채웁니다. var fillArray = new Array(6).fill(1); console.log(fillArray); //[1, 1, 1, 1, 1, 1] //채우기 메소드는 채우기의 시작 및 끝 위치를 지정하는 데 사용되는 두 번째 및 세 번째 매개변수를 허용할 수도 있습니다. ["a", "b", "c"].fill(7, 1, 2); // ['a', 7, 'c'] // 채워진 유형이 객체인 경우 할당된 객체는 깊은 복사 객체가 아닌 동일한 메모리 주소입니다. arr = new Array(3).fill({ 이름: "마이크" }); arr[0].name = "벤"; console.log(arr); // [{name: "Ben"}, {name: "Ben"}, {name: "Ben"}]
두 메서드 모두 배열에서 NaN을 찾을 수 있지만 ES5의 indexOf()는 NaN 5를 찾을 수 없습니다.
배열 인스턴스의 항목(), 키() 및 값()
메소드
는모두 배열을 순회하는 데 사용되며 모두 순회 객체를 반환합니다. for...of 루프를 사용하여 배열을 순회할 수 있습니다.
keys()는
키 이름의 쌍입니다.values()의 순회는
키 값의 순회
입니다.
()) { console.log(index); } // 0 1 for (let elem of ["a", "b"].values()) { console.log(elem); } //ab for (let [index, elem] of ["a", "b"].entries()) { console.log(index, elem); } // 0 "a" // 1 "비" var a = [1, 2, 3]; [...a.values()] // [1,2,3] [...a.keys()] // [0,1,2] [...a.entries()]; // [ [0,1], [1,2], [2,3] ]
6. include() 메서드는 부울 값을 반환합니다
. , 배열에 주어진 값
[1, 2, 3]이 포함되어 있는지 여부를 나타냅니다.includes(2) // true [(1, 2, 3)].includes(4) // false는
검색 시작 위치를 나타내는 두 번째 매개변수도 받을 수 있으며 기본값은 0입니다. 두 번째 매개변수가 음수이면 숫자의 위치를 나타냅니다. 두 번째 매개 변수가 배열 길이보다 큰 경우 포함 메서드는
의미론이 충분하지 않고 NaN[1, 23, NaN].includes(NaN)
을 잘못 판단하는 indexOf 메서드의 단점을 보완하기 위해
아래 첨자 0부터 시작합니다.//진정한
호환 방법:
함수 = ( () => { 배열.프로토타입.포함 ?(arr , val) => arr.includes(val) :(arr , val) => arr.some(item => 반환 항목 === val) })()
7. 배열 인스턴스의 Flat(), flatMap()
// flat() [1, 2, [3, [4, 5]]].플랫() // [1, 2, 3, [4, 5]] [1, 2, [3, [4, 5]]].플랫(2) // [1, 2, 3, 4, 5] //플랫맵() [2, 3, 4]. flatMap((x) => [x, x * 2]) //map이 실행된 후에는 [[2, 4], [3, 6], [4, 8]]입니다. //그런 다음 flat() 메서드를 실행하여 다음 결과를 얻습니다. // [2, 4, 3, 6, 4, 8] // flatMap()은 배열의 한 수준만 확장할 수 있습니다. // .Flat()과 동일 [1, 2, 3, 4].플랫맵(x => [ [x*2] ]) //맵이 실행된 후 [[[2]], [[4]], [[6]], [[8]]] //그런 다음 flat() 메서드를 실행하여 다음 결과를 얻습니다. // [[2], [4], [6], [8]] 코드 복사
8. 배열 인스턴스의 copywithin()은
멤버를 다음 위치에 복사합니다. 현재 배열 내의 지정된 위치 다른 위치에 복사한 다음 현재 배열로 돌아가면 원래 배열이
세 가지 매개변수를 받도록 변경됩니다:
1. 대상(필수) 이 위치에서 데이터 교체 시작
2. 시작(선택 사항) 이 위치에서 데이터 읽기를 시작합니다. 기본값은 0입니다. 음수인 경우
숫자 3에 도달하기 전에 데이터 읽기를 중지한다는 의미입니다. (선택 사항) 기본값은 배열 길이와 같습니다. 음수이면
세 매개변수가 모두 숫자여야 한다는 의미입니다. 그렇지 않으면 자동으로 숫자 값으로 변환됩니다.
[1,2,3,4,5].copywithin(0,3)/ /[4,5,3 ,4,5]는 아래 첨자 3부터 끝까지(4,5)까지의 멤버를 아래 첨자 0부터 시작하는 위치에 복사하고, 원래의 1과 2를 대체한다는 의미입니다.