兩陣列比較,篩選出不同元素(附陣列去重)

2022-08-04 17:36:12 字數 1239 閱讀 3272

群裡閒聊,聊到了這個問題,有大佬回答,特此記錄學習;

先說一下問題:

兩種方式:一種是使用es6的寫法,逼格高大上:

let a=[1,2,3,4], b=[1,2,3,5,4,6],

c = [...a, ...b],

d = new set(c),

e = array.from(d),

f = [...e.filter(_=>!a.includes(_)),...e.filter(_=>!b.includes(_))];

console.log(f);//[5, 6]

我知道es6已經流行開了,但對我來說還是某些查了資料才看明白,菜啊!

首先,其中的 "..." ,三個點也就是省略號是是es對陣列新新增的方法,學名叫做擴充套件運算子,他的主要作用有復

制陣列、

合併陣列、

與解構賦值結合、

字串轉陣列、

實現了 iterator 介面的物件、

這裡用到的就是陣列的合併,將其合併為乙個陣列。

然後,d的作用,轉化為乙個set,set是es6提供的一種資料結構,這裡主要用到是它不包含重複元素的特點,這樣轉化成了乙個沒有重複元素的資料結構(不敢說成集合和陣列),陣列去重so easy!

再然後,e變數作用簡單明瞭,把d的這種類陣列資料結構轉化為陣列,陣列中包含的仍是兩個陣列的並集

再然後,f變數裡面東西就多點了,首先是includes方法。看名稱應該知道是包含的意思,這個就是a包含這個元素則返回true,否則返回false,陣列的filter方法在接受到includes函式的結果取反之後,就篩選除了e中不包含a的元素,再加上e中不包含b的元素,重新組成乙個陣列,這個陣列就是最後的結果;

我嘗試用韋恩圖(就是交集、並集、取反那一堆)的方式解發布來,但是數學太渣了,沒辦法,你們誰數學好的可以私我發過來。。。

第二種方法:(接地氣,相容性好,支援ie8)

function diff(arr1,arr2){

var a = ;

var b = ;

for(var i=0;i

這個方法一看就明白,簡單易懂,並且也是較為穩定的方法,這個不會的就自行谷歌吧。。

來自為知筆記(wiz)

篩選兩個陣列中不同的元素

在頁面中有checkbox多項選擇時,如果未選擇某一項,有時候想要獲得未選中的checkbox的值,就需要從資料庫中查詢所有的值 list 把從前端傳到後端的選中的checkbox值作為陣列t1,把從資料庫中獲得的所有的checkbox的值作為t2或list2 1.篩選陣列t2中與t1不同的元素 p...

jquery陣列 篩選陣列元素

html h3 原始顯示 h3 div id show5 div h3 應用grep 方法後 1 h3 div id show6 div h3 應用grep 方法後 2 h3 div id show7 div jquery var animals dog cat tiger pig bird sho...

iOS篩選出陣列中想要的資料 陣列中儲存的模型

先用乙個便於理解的方法,表達出想要的結果 首先說一下需要的資料 根據城市的名字,城市的拼音,城市的首字母篩選是否有查詢的城市 zhcity模型 模型中有name 城市名字 pinyin 城市的拼音 pinyinhead 城市首字母 乙個可變的陣列 屬性 self.resultcities 乙個正常的...