【JavaScript】 陣列去重 陣列求差集、交集
阿新 • • 發佈:2019-01-01
去重:
陣列去重得分以下三種情況:數組裡是數字、數組裡是字串、數組裡是物件。前兩種直接使用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;
}