>웹 프론트엔드 >JS 튜토리얼 >자바스크립트 배열에서 일반적으로 사용되는 작업 소개(코드 예제)

자바스크립트 배열에서 일반적으로 사용되는 작업 소개(코드 예제)

不言
不言앞으로
2019-03-19 11:02:192464검색


이 글은 JavaScript 배열의 일반적인 작업(코드 예제)을 소개합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.

1. 원래 배열을 변경하지 말고 새 배열(문자열)을 반환합니다.

1. concat()은 두 개 이상의 배열을 연결하며 양쪽의 원래 배열은 변경되지 않으며 연결된 배열의 복사본이 반환됩니다. .

2. Join()은 배열의 모든 요소를 ​​문자열에 넣고 문자열을 반환합니다.

var a = [1,2,3];
a.join([4,5,6]);    //  "14,5,624,5,63"
a.join('sau');      //  "1sau2sau3"

3. Slice()는 처음부터 끝까지(끝 제외) 배열 일부의 얕은 복사본을 선택합니다. 새로운 배열로

var a  = [1,2,3,4,5];
a.slice(0,0);     //[]
a.slice(0,1);     //[1]
a.slice(2,4);    //[3,4]
a.slice(0,5);    //[1,2,3,4,5]
a.slice(10,1);   //[]
a.slice(4);   //[5]

4. map()은 새로운 배열을 생성하고 이를 반환합니다. 새 배열의 각 요소는 제공된 함수를 실행하기 위해 원래 배열의 각 요소를 가져옵니다

5. .every() 콜백 함수가 false를 반환할 때까지 배열의 각 요소에 대해 지정된 콜백 함수를 한 번씩 실행합니다. 이때, Every()는 false를 반환하고 각 요소에 대해 콜백 함수가 더 이상 실행되지 않습니다. Every() )는 true를 반환합니다.

6. some()은 콜백 함수가 true를 반환할 때까지 배열의 각 요소에 대해 지정된 콜백 함수를 한 번씩 실행합니다. 이때 some()은 true를 반환하고 더 이상 실행되지 않습니다. 콜백 함수가 모든 요소에 대해 false를 반환하면 some()은 false를 반환합니다.

7.filter() 제공된 함수로 구현된 테스트의 모든 요소를 ​​포함하는 새 배열을 만듭니다.

2. 원본 배열을 변경합니다

1. forEach()는 각 요소에 대해 제공된 함수를 실행합니다. 원래 배열이 수정되고, 실행 결과는 반환되지 않으며, undefound가 반환됩니다.

2.pop() 배열의 마지막 요소를 삭제하고 삭제된 요소의 값을 반환합니다. 배열이 비어 있으면 배열이 변경되지 않고 undefed가 반환됩니다.

3. push() 배열 끝에 하나 이상의 요소를 추가하고 변경된 배열 길이를 반환합니다.

4. reverse()는 배열에 있는 요소의 위치를 ​​바꾸고 배열에 대한 참조를 반환합니다.

5.shift()는 배열에서 첫 번째 요소를 제거하고 원래 배열을 변경한 다음 요소의 값을 반환합니다.

6. unshift() 배열의 시작 부분에 하나 이상의 요소를 추가하고 새 배열의 길이를 반환합니다.

7.sort() 배열의 요소를 정렬하고 배열을 반환합니다. 정렬이 반드시 안정적인 것은 아닙니다. 기본 정렬 순서는 문자열 유니코드 코드 포인트를 기반으로 합니다.

8. splice() 배열에 요소를 추가/제거한 다음 삭제된 새 배열()을 반환합니다.

var a  = [1,2,3,4,5];
a.splice(0,1);     //删除从0位置开始的1个   返回[1]   a为[2,3,4,5] 
a.splice(1,0,99)   //在1的位置插入99   [2,99,3,4,5]
a.splice(1,1,88)   //99替换为88  [2,88,3,4,5]

3. 탐색 방법

1. 속성 이름 가져오기: for...in과 object.key()의 차이점

답변: 1. for in은 열거할 수 있는 속성 이름 목록을 탐색합니다. [ [prototype]] 프로토타입 체인을 포함한 객체.

2. Object.keys()는 속성 이름이 객체에 있는지 확인하고 모든 열거 가능한 속성 이름을 포함하는 배열을 반환합니다.

3. )은 속성만 찾습니다. 이름이 객체에 있는지 여부에 관계없이 열거 가능 여부에 관계없이 모든 속성 이름이 포함된 배열을 반환합니다.

2. 속성 값 가져오기: for... of 및 object.values()

for of 문: [[propertype]] 프로토타입 체인

객체를 포함하여 반복 가능한 객체의 열거 가능한 속성 값 목록을 탐색합니다. 값(): 프로토타입 체인을 제외하고 주어진 객체 자체의 모든 열거 가능한 속성 값을 반환합니다.

4. ES6 구문 맵 키-값 쌍이 배열로 변환됩니다

새 맵이 맵을 생성합니다

// new Map创建一个map
let map = new Map([[1,"one"], [2,"two"], [3,"three"]]);
map.set(4, "four");
// 获取所有键值对
console.log("获取key")
console.log([...map.keys()]) // 输出[1, 2, 3, 4]

console.log("获取value")
console.log([...map.values()]) // 输出[one, two, three, four]

console.log("获取map数组")
console.log([...map]) // 输出[[1, "one"], [2, "two"], [3, "three"], [4, "four"]]

5. 두 개의 오름차순 배열이 하나의 오름차순 배열로 병합됩니다

1. ), 공간 복잡도 O(M+N)

function merge(left, right){
    let result  = [],
        il      = 0,
        ir      = 0;

    while (il < left.length && ir < right.length) {
        result.push(left[il] < right[ir] ? left[il++] : right[ir++]);
console.log(result);
    }

    return result.concat(left.slice(il)).concat(right.slice(ir));
}

2. 시간 복잡도 O(M+N), 공간 복잡도 O(1)

   // m, n 是数组长度
function merge(left, m, right,  n) {
    var i = m - 1, j = n - 1, writeIdx = m + n - 1;
    while (i >= 0 && j >= 0)
    left[writeIdx--] = left[i] > right[j]? left[i--] : right[j--];
    while (j >= 0)
    left[writeIdx--] = right[j--];
    return left;
}

6. 배열 중복 문제

(1) 배열 중복 제거

1 , 축소 메소드

const distinct = arr => arr.sort().reduce( (init, current) => {
    
    if (init.length === 0 || init[init.length - 1] !== current) {
        init.push( current );
    }
    return init;
}, []);

let arr = [1,2,1,2,3,5,4,5,3,4,4,4,4];
distinct(arr); // [1, 2, 3, 4, 5]

2, 필터 메소드

const Unique = arr => arr.filter( (element, index, self) =>

return self.indexOf( element ) === index;
});
let arr = [1,2,1,2,3,5,4,5,3,4,4,4,4];
distinct(arr); // [1, 2, 3, 5, 4]
(3) 배열에 중복이 있는지 확인합니다

/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function(nums) {
    
    if(!nums || nums.length == 0) return 0;
    
    let len = 0;
    for(let i = 1; i < nums.length; i++) {
        if (nums[len] != nums[i]) {
            nums[++ len] = nums[i];
        }
    }
    return len + 1;
};

7 . 두 배열의 교차점

두 개의 배열이 주어지면 교차점을 계산하는 방법을 작성하세요. 예:

다음과 같이 nums1 = [1, 2, 2, 1], nums2 = [2, 2]를 반환합니다. ].

참고: 1. 결과의 각 요소 발생 횟수는 두 배열의 요소 발생 횟수와 일치해야 합니다. 2.

출력 결과의 순서는 무시할 수 있습니다. up: 1. nums1의 크기가 nums2보다 훨씬 작은 경우 어떻게 알고리즘을 최적화할 수 있습니까? 3. nums2의 요소가 디스크에 저장되어 있고 메모리가 제한되어 있으면 모든 요소를 ​​로드할 수 없습니다.

/**
 * @param {number[]} nums
 * @return {boolean}
 */
var containsDuplicate = function(nums) {
    
    let hashMap = new Map();
    for(let i = 0; i < nums.length; i++) {
        
        if( hashMap.has(nums[i]) ) {
           return true;
        }
        
        hashMap.set(nums[i], 1);
    }
    
    return false;
};

8. 배열에서 한 번만 나타나는 숫자를 알아보세요.

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

/**
 * @param {number[]} nums
 * @return {number}
 */
var singleNumber = function(nums) {
    
    let number = 0;
    for(let i = 0; i < nums.length; i++) {
        number ^= nums[i];
    }
    return number;
};

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript教程视频栏目!

위 내용은 자바스크립트 배열에서 일반적으로 사용되는 작업 소개(코드 예제)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제