如何检测每个元素的对象数组变化?

How detect change into arrays of object for each element?

我有一个对象数组。我想为数组中的每个元素获取与其他元素的区别。 例如,thi 是我的对象数组:

array= [{id:1, name= 'test', isAdmin: true, userMail:'test@test.com', userTel: '+12555555'}, 
{id:1, name= 'test', isAdmin: false, userMail:'test@test.com', userTel: '+12555555'}, {id:1, 
name= 'test', isAdmin: false, userMail:'test@test.com', userTel: '+12555785444'}]

结果是:

result = [isAdmin, userMail, userTel]

我试过这个解决方案但没有用:

    for (let index = 0; index < this.array.length; index++) {        
        const e = this.array[index];            
                 let j = index + 1;
        let t;
        while (index !== j && j <= (this.array.length - 1) && t === undefined) {
            t = this.difference(array);
            j++;
        }
       let y;            
        if (t !== null && t !== undefined) {
            Object.keys(t).forEach(key => {
                if (key !== 'idTrace') {                    
                    y = key;
                }
            });
        }
         this.result.push(y);
    }

difference(object, base) {
    return transform(object, (result, value, key) => {
        if (!isEqual(value, base[key])) {
            result[key] = isObject(value) && isObject(base[key]) ? 
           this.difference(value, base[key]) : value;
        }
    });
}

任何帮助,在此先感谢。

你可以这样做。

请注意,这不是最高效的解决方案,但它是可以理解(可读)的解决方案,您可以根据需要对其进行优化。

const objects = [{
        "id": 1,
        "name": "test",
        "isAdmin": true,
        "userMail": "test@test.com",
        "userTel": "+12555555"
    },
    {
        "id": 1,
        "name": "test",
        "isAdmin": false,
        "userMail": "test@test123.com",
        "userTel": "+12555555"
    },
    {
        "id": 1,
        "name": "test",
        "isAdmin": false,
        "userMail": "test@test.com",
        "userTel": "+12555785444"
    }
];

// Finds all the keys that are different in two objects.
const difference = (obj1, obj2) => {
    let foundKeys = [];
    Object.keys(obj1).forEach(key => {
        if (obj1[key] !== obj2[key]) {
            foundKeys.push(key);
        }
    });
    return foundKeys;
};

let differentKeys = [];

// Compares every object with all objects and pushes to one array all differences in keys.
for (let i = 0; i < objects.length; i++) {
    for (let j = i + 1; j < objects.length; j++) {
        differentKeys = differentKeys.concat(difference(objects[i], objects[j]));
    }
}

// Removes duplicates.
differentKeys = differentKeys.filter(function(value, index, differentKeys) {
    return differentKeys.indexOf(value) === index;
});

console.log(differentKeys);

如果您有任何问题,请告诉我。