JS删除数组内的重复对象

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))

注明:

该代码非原创,我忘记是从哪里找的了,仅作为笔记进行记录。

代码思想:

对象的键名是唯一,所以用键名来进行操作更加的合理。

猜你喜欢

转载自blog.csdn.net/csdn_xuebing/article/details/89218075