Skip to content

Instantly share code, notes, and snippets.

@sospedra
Created July 6, 2017 13:46
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save sospedra/647d4a180047593ff92d40cc9827217d to your computer and use it in GitHub Desktop.
Save sospedra/647d4a180047593ff92d40cc9827217d to your computer and use it in GitHub Desktop.
Lodash objects difference
_.fromPairs(_.differenceBy(_.entries(original), _.entries(target), ([key, val]) => val))
@retyui
Copy link

retyui commented Jan 18, 2018

Functional programming (FP) exmaple: 🥇

import { transform, isEqual, isObject } from "lodash/fp";

const _transform = transform.convert({
	cap: false
});

export function differenceObject(targetObj, baseObj) {
	const iteratee = (result, value, key) => {
		if (!isEqual(value, baseObj[key])) {
			const valIsObj = isObject(value) && isObject(baseObj[key]);
			result[key] = valIsObj ? differenceObject(value, baseObj[key]) : value;
		}
	};
	return _transform(iteratee, null, targetObj);
}

@silverio
Copy link

silverio commented Apr 4, 2018

Hi, I am getting the error: [ts] Property 'convert' does not exist on type 'Transform'.

my code:

import { transform, isEqual, isObject} from "lodash/fp";
const _transform = transform.convert({
	cap: false
});

Is this a typescript version issue?

"@types/lodash": "^4.14.106",
 "lodash": "^4.17.5",
 "tslint": "5.8.0",
 "typescript": "2.7.2"

Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment