>웹 프론트엔드 >JS 튜토리얼 >js 배열 중복 제거 및 디플래팅에 대한 자세한 설명

js 배열 중복 제거 및 디플래팅에 대한 자세한 설명

小云云
小云云원래의
2018-03-07 11:33:421786검색

이 기사에서는 주로 js 배열 중복 제거 및 디플래팅에 대한 자세한 설명을 공유하여 모든 사람에게 도움이 되기를 바랍니다.

어레이 중복 제거

var arr = [1, 43, 4, 3, 2, 4, 3]
// 중복된 항목을 제거한 후
arr = [1, 43, 4, 3, 2]

전통적인 방법, for 루프 구현

function dedupe(arr) {
    var rets = [];    for (var i = 0; i < arr.length; i ++) {        if (!rets.includes(arr[i])) {
            rets.push(arr[i]);
        }
    }    return rets;
}// 方法二: forEach方法实现function dedupe(arr) {
    var rets = [];
    arr && arr.forEach(function(item){
        if (!rets.includes(item)){
            rets.push(item);
        }
    });    return rets;
}

ES6 방법 구현

// es6提供的新的数据结构Set,类似数组,但是成员的值都是唯一的,没有重复的值。function dedupe(arr) {
    var newSet = new Set(arr);  // arr变成了set的数据结构,并去除了其中重复的元素
    return Array.from(newSet);  // Array.from方法将set数据结构转为数组数据结构}

배열 디플래트닝
배열 평면화는 다중 레벨 배열 배열을 중첩하는 것입니다(중첩은 무엇이든 가능) 레벨 수)는 레벨이 하나만 있는 배열로 변환됩니다.

var arr = [1, 2, 3, [4, 3, [2, 7], 2], 5, [5, 9 , 10], 7]
// 평탄화 해제 후
arr = [1, 2, 3, 4, 3, 2, 7, 2, 5, 5, 9, 10, 7];

(1) 루프 재귀 구현

// for循环,如果子元素还是数组,则递归调用该方法function flatten(arr) {
    var rets = [];    for(var i = 0; i < arr.length; i ++) {        if (Array.isArray(arr[i])) {
            rets = rets.concat(flatten(arr[i]));
        } else {
            rets.push(arr[i]);
        }
    }    return rets;
}// 使用forEachfunction flatten(arr) {
    var rets = [];
    arr && arr.forEach(function(item) => {
        if (Array.isArray(item)) {
            rets = rets.concat(flatten(item));
        } else {
            rets.push(item);
        }
    });    return rets;
}

(2) 줄이기를 사용하여 단순화 code

function flatten(arr) {
    arr.reduce(function(pre, item){
        return pre.concat(Array.isArray(item) ? flatten(item) : item);
    }, [])
}

(3) 배열 요소가 모두 숫자인 경우 toString 메서드를 사용할 수 있습니다

function flatten(arr) {
    var newArr = arr.toString().split(',');    return newArr.map(function(item){
        return +item;        // 将字符串转为数字
    });
}

관련 권장 사항:

js 배열 중복 제거 및 정렬에 대한 자세한 설명,

JavaScript의 배열 중복 제거 구문 분석 및 Python

Javascript 배열 중복 제거에 대한 여러 아이디어의 자세한 예

위 내용은 js 배열 중복 제거 및 디플래팅에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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