var a = ['{"1":1,"2":2}', {1:1, 2:2}, 'hello',{hello: '323651',bye: '43434'},[1,2,34],true,10,9,8,10,'true','hello',true,false,9,'9',{hello: '312312',ok: 32323},[1,2,34]];
var json = {};
var arr = [];
for (let i = 0, len = a.length; i < len; i++) {
let str = JSON.stringify(a[i]) + typeof a[i];
if (!json[str]) {
arr.push(a[i]);
}
json[str] = 1;
}
console.log(arr);
數字,布爾型等直接在後面加判斷就好,加在一起也行,我這麼寫你看著更明白。
物件vs物件 和 陣列vs陣列 遞歸處理,其它情況直接比較。直接
===
判斷,相等則完事。不相等的情況,如果是 物件vs物件 或 陣列vs陣列 再 JSON stringify 對比,其它的完事。
如果物件順序順序或內部陣列元素時有序數組的話就元素轉字串後比較.
JSON 之間最好還是用另一個字元來間隔,如果只能按目前這樣,就用'hello'來拆分數組,再來比較去重。
新合集()