function hasPropsAndVals(obj, kv) {
    if (typeof (obj) !== 'object' || typeof (kv) !== 'object') {
        return (false);
    }

    if (Object.keys(kv).length === 0) {
        return (true);
    }

    return (Object.keys(kv).every(function (k) {
        return (obj[k] && obj[k] === kv[k]);
    }));
}
function hasPropsAndVals(obj, kv) {
    if (typeof (obj) !== 'object' || typeof (kv) !== 'object') {
        return (false);
    }

    if (Object.keys(kv).length === 0) {
        return (true);
    }

    return (Object.keys(kv).every(function (k) {
        return (obj[k] && obj[k] === kv[k]);
    }));
}
function hasPropsAndVals ( obj , kv ) { if ( typeof ( obj ) !== 'object' || typeof ( kv ) !== 'object' ) { return ( false ) ; } if ( Object . keys ( kv ) . length === 0 ) { return ( true ) ; } return ( Object . keys ( kv ) . every ( function ( k ) { return ( obj [ k ] && obj [ k ] === kv [ k ] ) ; } ) ) ; }
Returns true when "obj" (Object) has all the properties "kv" (Object) has, and with exactly the same values, otherwise, false
Returns true when obj ( Object ) has all the properties kv ( Object ) has and with exactly the same values otherwise false