如果有功能,如何比较两个对象是否相等? lodash的isEqual确实可以很好地工作,直到抛出函数为止:

_.isEqual({
    a: 1,
    b: 2
}, {
    b: 2,
    a: 1
});

// -> true

_.isEqual({
    a: 1,
    b: 2,
    c: function () {
        return 1;
    }
}, {
    a: 1,
    b: 2,
    c: function () {
          return 1;
    }
});

// -> false

最佳答案

您确定要比较功能吗?如果您只关心比较不是函数的每个属性,那么使用lodash很容易做到:

var o1 = { a: 1, b: 2, c: function() { return 1; } },
    o2 = { a: 1, b: 2, c: function() { return 1; } };

_.isEqual(o1, o2)
// → false

_.isEqual(_.omit(o1, _.functions(o1)), _.omit(o2, _.functions(o2)));
// → true

functions()函数返回函数属性列表,使用omit()可以删除它们。

关于Javascript使用lodash isEqual比较具有功能的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30212323/

10-15 00:43