Create an intersection between 2 or more Y.Model instances

by dfederighi

JavaScript

YUI().use('node', 'model', function(Y) {
    var model1 = new Y.Model({'name':'dale','occupation':'engineer','age':40,'favorite-color':'red'}),
        model2 = new Y.Model({'name':'seth','occupation':'engineer','age':40,'favorite-color':'blue'}),
        model3 = new Y.Model({'name':'thom','occupation':'engineer','age':32,'favorite-color':'blue'}),
        model4 = new Y.Model({'name':'scot','occupation':'engineer','age':36,'favorite-color':'blue'}),
        keys = ['name','occupation','age','favorite-color'];
    
    var modelList = [model1, model2, model3, model4],
        intersect = {},
        rejects = {};
    
    Y.Array.each(modelList, function(model, index) {
        if (!modelList[index + 1]) return;
       
        var nextModel = modelList[index + 1];
        
        Y.Object.each(model.getAttrs(keys), function(val, key) {
            if (!rejects[key]) {
                if (nextModel.get(key) === val) {
                    intersect[key] = val; 
                } else {
                    delete intersect[key];
                    rejects[key] = true;
                }
            }
        });
    });
    
    console.log('intersect:', intersect);
});