群裡閒聊,聊到了這個問題,有大佬回答,特此記錄學習;
先說一下問題:
兩種方式:一種是使用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 乙個正常的...