前言:当需要复制一些数据又不需要数据中的一些key时,首先想到的就是将该key在对象中移除,如果是很深的层级时处理起来就会变得麻烦一些。下面介绍两个库,用于处理这样的场景。
Install:
npm install omit-deep --save
npm install omit-deep-lodash --save
Usage:
import omitDeep from 'omit-deep';
var obj = {a: 'a', b: 'b', c: {b: 'b', d: {b: 'b', f: 'f'}}};
console.log(omitDeep(obj, ['b']));
//=> {a: 'a', c: {d: {f: 'f'}}}
var obj = {a: 'a', b: 'b', c: {b: 'b', d: {b: 'b', f: 'f'}}};
console.log(omitDeep(obj, ['b', 'f']));
//=> {a: 'a', c: {d: {}}}
Also works with dot-notation:
var obj = {a: 'a', b: 'b', c: {b: 'b', d: {b: 'b', f: 'f'}}};
console.log(omitDeep(obj, ['c.d.b', 'f']));
//=> { a: 'a', b: 'b', c: { b: 'b', d: {} } }
import omitDeep from "omit-deep-lodash";
omitDeep({a: "a", b: "b", c: {b: "b", d: {b: "b", f: "f"}}}, "b");
//=> {a: "a", c: {d: {f: "f"}}}
omitDeep({a: "a", b: "b", c: {b: "b", d: {b: "b", f: "f"}}}, "a", "b");
//=> {c: {d: {f: "f"}}}
显著的区别是两者在使用上的差别:
omit-deep
:删除的对象需要用一个数组包裹,多个时在数组中依次写入。只接受两个参数,第一个参数要操作的对象,第二个参数是一个数组里面存放着需要删除的key。
omit-deep-lodash
:删除的对象需要在对象后以此写入,中间用逗号隔开。接受很多参数,第一个参数要操作的对象,以后的参数都是要删除的key.