Maison  >  Article  >  interface Web  >  Explication détaillée de la déduplication et de l'aplatissement du tableau js

Explication détaillée de la déduplication et de l'aplatissement du tableau js

小云云
小云云original
2018-03-07 11:33:421735parcourir

Cet article partage principalement avec vous l'explication détaillée de la déduplication et du déaplatissement des tableaux js, en espérant qu'il puisse aider tout le monde.

Déduplication de tableau

var arr = [1, 43, 4, 3, 2, 4, 3]
// Après avoir supprimé les doublons
arr = [1, 43, 4, 3, 2]

Méthode traditionnelle, pour l'implémentation de la boucle

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;
}

Implémentation de la méthode ES6

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

array Aplatissement
L'aplatissement d'un tableau consiste à convertir un tableau imbriqué à plusieurs niveaux (l'imbrication peut être n'importe quel nombre de niveaux) en un tableau avec un seul niveau

var arr = [ 1, 2, 3, [4, 3, [2, 7], 2], 5, [5, 9, 10], 7]
// Après déaplatissement
arr = [1, 2, 3, 4, 3, 2, 7, 2, 5, 5, 9, 10, 7];

(1) Implémentation de la récursion de boucle

// 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) Utilisez réduire pour simplifier le code

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

(3) Si les éléments du tableau sont tous des nombres, vous pouvez utiliser la méthode toString

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

Recommandations associées :

Explication détaillée de la déduplication et du tri des tableaux js,

Analyse de la déduplication des tableaux en JavaScript et Python

Exemples Explication détaillée de plusieurs idées de déduplication de tableaux javascript

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn