How to use underscore's “intersection” on objects?

后端 未结 10 1129
春和景丽
春和景丽 2020-12-02 15:49
_.intersection([], [])

only works with primitive types, right?

It doesn\'t work with objects. How can I make it work with objects (maybe b

10条回答
  •  时光取名叫无心
    2020-12-02 16:17

    If you wanna compare only objects:

    b = {"1":{"prod":"fibaro"},"2":{"prod":"aeotec"},"3":{"prod":"sw"}}; 
    a = {"1":{"prod":"fibaro"}};
    
    
    _.intersectObjects = function(a,b){
        var m = Object.keys(a).length;
        var n = Object.keys(b).length;
        var output;
        if (m > n) output = _.clone(a); else output = _.clone(b);
    
        var keys = _.xor(_.keys(a),_.keys(b));
        for(k in keys){
            console.log(k);
            delete output[keys[k]];
        }
        return output;
    }
    _.intersectObjects(a,b); // this returns { '1': { prod: 'fibaro' } }
    

提交回复
热议问题