Exemple #1
0
test('amp-merge', function (t) {
    var result;
    var obj = {
        test: 'test',
        beep: 'boop'
    };

    t.deepEqual(merge(obj, {a: 'b'}), { a: 'b', beep: 'boop', test: 'test' }, 'can merge an object with the attributes of another');
    t.deepEqual(obj, { test: 'test', beep: 'boop' }, 'check that obj remains unchanged');

    t.equal(merge({a: 'x'}, {a: 'b'}).a, 'b', 'properties in source override destination');
    t.equal(merge({x: 'x'}, {a: 'b'}).x, 'x', "properties not in source don't get overridden");
    result = merge({x: 'x'}, {a: 'a'}, {b: 'b'});
    t.deepEqual(result, {x: 'x', a: 'a', b: 'b'}, 'can merge from multiple source objects');
    result = merge({x: 'x'}, {a: 'a', x: 2}, {a: 'b'});
    t.deepEqual(result, {x: 2, a: 'b'}, 'merge from multiple source objects last property trumps');
    result = merge({}, {a: void 0, b: null});
    t.deepEqual(keys(result), ['a', 'b'], 'merge copies undefined values');

    var F = function() {};
    F.prototype = {a: 'b'};
    var subObj = new F();
    subObj.c = 'd';
    t.deepEqual(merge({}, subObj), {a: 'b', c: 'd'}, 'merge copies all properties from source');

    t.deepEqual(merge(null, {a: 1}), { a: 1 }, 'will allow a parameter to be null');
    t.deepEqual(merge(undefined, {a: 1}), { a: 1 }, 'will allow a parameter to be null undefined');

    t.end();
});
Exemple #2
0
module.exports = function some(obj, func, context) {
    if (obj == null) return false;
    var keys = obj.length !== +obj.length && objKeys(obj);
    var length = (keys || obj).length;
    var index = 0;
    var currentKey;
    
    func = iteratee(func, context);
    for (; index < length; index++) {
        currentKey = keys ? keys[index] : index;
        if (func(obj[currentKey], currentKey, obj)) return true;
    }
    return false;
};
Exemple #3
0
module.exports = function map(obj, iteratee, context) {
    if (obj == null) return [];
    iteratee = createIteratee(iteratee, context, 3);
    var keys = obj.length !== +obj.length && objKeys(obj);
    var length = (keys || obj).length;
    var results = Array(length);
    var currentKey;
    var index = 0;
    for (; index < length; index++) {
        currentKey = keys ? keys[index] : index;
        results[index] = iteratee(obj[currentKey], currentKey, obj);
    }
    return results;
};
Exemple #4
0
module.exports = function each(obj, iteratee, context) {
    if (obj == null) return obj;
    iteratee = createCallback(iteratee, context);
    var i, length = obj.length;
    if (length === +length) {
        for (i = 0; i < length; i++) {
            iteratee(obj[i], i, obj);
        }
    } else {
        var keys = objKeys(obj);
        for (i = 0, length = keys.length; i < length; i++) {
            iteratee(obj[keys[i]], keys[i], obj);
        }
    }
    return obj;
};
Exemple #5
0
var keys = require('amp-keys');

var obj = {
    hi: 'there',
    oh: 'hello there'
};

keys(obj); //=> ['hi', 'oh']
keys(undefined) //=> []