0.2.9 • Published 10 years ago
object-concat v0.2.9
object-concat
Assigns properties of source object(s) to a new object.
npm install object-concat --savenpm stats
Example
basic
var concat = require('object-concat')
var defaults = { level: 1 }
var restored = { player: 'isaac', level: 5 }
var gamedata = concat(defaults, restored)
assert.equal(gamedata.player, 'isaac')
//=> undefined
assert.equal(gamedata.level, 5)
//=> undefined
assert.notDeepEqual(gamedata, defaults)
//=> undefined
assert.notDeepEqual(gamedata, restored)
//=> undefinedtransform
var concat = require('object-concat')
var defaults = { level: 1 }
var restored = { player: 'isaac', level: 5 }
var gamedata = concat(defaults, restored, function (key, sourceVal, targetVal) {
return key === 'player' ? sourceVal.toUpperCase() : sourceVal
})
assert.equal(gamedata.player, 'ISAAC')
//=> undefinedFeatures
- Concatenative inheritance.
- Return a new object instead of mutating a
targetobject. - Subsequent source properties overwrite previous.
- Supports optional
iterateefunction allowing transformation of target values.
Anti-Features
- Will never make you seed your parameter list with an empty object:
- No
_.extend({}, source)
- No
- Will never mutate existing objects.
- Will never overwrite native
Objectprototype methods (i.e.Object.assignpolyfills).
API
concat([sources], [iteratee])
Arguments
[sources]: (…Object)The source objects.[iteratee]: (Function)Function that produces desired target value (must be last parameter).key: (String)Object key name.sourceVal: (*)Object source value.targetVal: (*)Object target value.
Returns
(Object)The new object.
Alternatives
Most, if not all of the alternatives listed have varying semantics so be careful which you choose for your own applications.