function deteleObject(obj) {
// console.log(obj)
var uniques = [];
var stringify = {};
for (var i = 0; i < obj.length; i++) {
var keys = Object.keys(obj[i]);
var str = '';
for (var j = 0; j < keys.length; j++) {
str += JSON.stringify(keys[j]);
str += JSON.stringify(obj[i][keys[j]]);
}
if (!stringify.hasOwnProperty(str)) {
uniques.push(obj[i]);
stringify[str] = true;
}
}
return uniques
}
var arr1 = [123, "meili", "123", "mogu", 123];
var arr2 = [123, [1, 2, 3], [1, "2", 3], [1, 2, 3]];
var arr3 = [123, {a: 1}, {a: {b: 1}}, {a: "1"}, {a: {b: 1}}, "meili"];
var arr4 = [[1,2,3],'[1,2,3]', [1,2,3], {a: {b: 1}},'{"a":{"b":1}}',{a: {b: 1}},1,1,2,2,3]
console.log(deteleObject(arr1))
console.log(deteleObject(arr2))
console.log(deteleObject(arr3))
console.log(deteleObject(arr4))
注明:
该代码非原创,我忘记是从哪里找的了,仅作为笔记进行记录。
代码思想:
对象的键名是唯一,所以用键名来进行操作更加的合理。