1. 程式人生 > >【JavaScript】 陣列去重 陣列求差集、交集

【JavaScript】 陣列去重 陣列求差集、交集

去重:

陣列去重得分以下三種情況:數組裡是數字、數組裡是字串、數組裡是物件。前兩種直接使用jquery提供的unique方法就可實現。

一、數字:                              二、字串:
let arr = [1, 1, 2, 4, 2];            let arr1 = ['b', 'a', 'v', 'a'];
let newArr = $.unique(arr);           let newArr = $.unique(arr1);
console.log(newArr);                  console.log(newArr);
輸出:[1
,2,4] 輸出:['a', 'b', 'v'] 三、物件: //可接第二種方式來實現:先將物件轉為字串,然後去重後再轉為json物件 let oData = [ {name:'張三',value:'1'}, {name:'張三',value:'1'}, {name:'李四',value:'2'}, {name:'王五',value:'3'}, ]; var newData = []; //將json物件轉為字元傳 for(var i in oData){ oData[i] = JSON.stringify(oData[i]); newData.push(oData[i]); } oData = []; //去重
newData = $.unique(newData); //轉為json物件 for(var j in newData){ newData[j] = JSON.parse(newData[j]); oData.push(newData[j]); }

求差集、交集:

應用場景:有2個列表,需要做到一一對應也就是對映的關係。說人話就是:選過之後的值就不能再選。

let allArr = ['a', 'b', 'c', 'd', 'e'];
let checkArr = ['a', 'd', 'e']; 

function getDiffrentSet (allArr, arr2) {
    var
resultArr = []; for (let i in allArr) { //if (checkArr.indexOf(allArr[i]) < 0) { //差集["c", "b"] if (checkArr.indexOf(allArr[i]) >= 0) { //交集["a", "d", "e"] resultArr.push(checkArr[i]); } } return resultArr; }