ホームページ  >  記事  >  ウェブフロントエンド  >  js配列の重複排除と平坦化の詳細な説明

js配列の重複排除と平坦化の詳細な説明

小云云
小云云オリジナル
2018-03-07 11:33:421688ブラウズ

この記事では主に、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数据结构转为数组数据结构}

配列の平坦化

配列の平坦化とは、マルチレベルの配列配列をネストすることです (ネストは任意です)レベル数) は 1 レベルのみの配列に変換されます

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) reduce を使用して、コード

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。