首頁 >web前端 >前端問答 >node數組去重的三種方法是什麼

node數組去重的三種方法是什麼

WBOY
WBOY原創
2022-02-28 16:09:333552瀏覽

方法:1.利用map資料結構實作去重,將陣列的每一個元素當作key存到map中;2、利用es6中的set方法實作去重,語法為「Set(array) 」;3、利用forEach語句配合indexOf實現去重。

node數組去重的三種方法是什麼

本文操作環境:Windows10系統、nodejs 12.19.0版、Dell G3電腦。

node陣列去重的三種方法是什麼

第一種 利用Map資料結構去重

         創建一個空Map資料結構,遍歷需要去重複的陣列,把數組的每一個元素當作key存到Map。由於Map中不會出現相同的key值,所以最後得到的就是去重後的結果

function a(arr) {
                let map = new Map();
                let array = new Array();  // 数组用于返回结果
                for (let i = 0; i < arr.length; i++) {
                    if (map.has(arr[i])) {  // 如果有该key值
                        map.set(arr[i], true);
                    } else {
                        map.set(arr[i], false);   // 如果没有该key值
                        array.push(arr[i]);
                    }
                }
                return array;
            }
            var arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5];
            console.log(a(arr)) //[1,2,3,4,5]

第二種   使用ES6中的set是最簡單的去重方法

let arr2 = [1, 2, 3, 4, 5, 5, 4, 3];
            let res = [...new Set(arr2)];
            console.log(res);

第三種   forEach indexOf實作去重

var arr3 = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5];
            var b = distinct(arr3);
            function distinct(arr) {
                result = [],
                    len = arr3.length; //len=10;
                arr3.forEach(function (v, i, arr3) {
                    var bool = arr3.indexOf(v, i + 1);
                    //从传入参数的下一个索引值开始寻找是否存在重复
                    if (bool === -1) {
                        result.push(v);
                    }
                })
                return result;
            };
            console.log(b.toString()); //1,2,3,4,5

推薦學習:《nodejs影片教學

以上是node數組去重的三種方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn