Skip to main content
Module

x/lodash/_baseMerge.js

A modern JavaScript utility library delivering modularity, performance, & extras.
Extremely Popular
Go to Latest
File
import Stack from './_Stack.js';import arrayEach from './_arrayEach.js';import assignMergeValue from './_assignMergeValue.js';import baseKeysIn from './_baseKeysIn.js';import baseMergeDeep from './_baseMergeDeep.js';import isArray from './isArray.js';import isObject from './isObject.js';import isTypedArray from './isTypedArray.js';
/** * The base implementation of `_.merge` without support for multiple sources. * * @private * @param {Object} object The destination object. * @param {Object} source The source object. * @param {number} srcIndex The index of `source`. * @param {Function} [customizer] The function to customize merged values. * @param {Object} [stack] Tracks traversed source values and their merged * counterparts. */function baseMerge(object, source, srcIndex, customizer, stack) { if (object === source) { return; } if (!(isArray(source) || isTypedArray(source))) { var props = baseKeysIn(source); } arrayEach(props || source, function(srcValue, key) { if (props) { key = srcValue; srcValue = source[key]; } if (isObject(srcValue)) { stack || (stack = new Stack); baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); } else { var newValue = customizer ? customizer(object[key], srcValue, (key + ''), object, source, stack) : undefined;
if (newValue === undefined) { newValue = srcValue; } assignMergeValue(object, key, newValue); } });}
export default baseMerge;