From 829c5beec87d4e5cc65bc9a4c62ac4a840538eaf Mon Sep 17 00:00:00 2001 From: halsn Date: Thu, 9 May 2019 18:30:52 +0800 Subject: [PATCH] Rename deepGetter to deepGet --- snippets/{deepGetter.md => deepGet.md} | 8 +++--- tag_database | 2 +- test/deepGet.test.js | 40 ++++++++++++++++++++++++++ test/deepGetter.test.js | 40 -------------------------- 4 files changed, 45 insertions(+), 45 deletions(-) rename snippets/{deepGetter.md => deepGet.md} (68%) create mode 100644 test/deepGet.test.js delete mode 100644 test/deepGetter.test.js diff --git a/snippets/deepGetter.md b/snippets/deepGet.md similarity index 68% rename from snippets/deepGetter.md rename to snippets/deepGet.md index a6e6a3a3d..95fbdffcf 100644 --- a/snippets/deepGetter.md +++ b/snippets/deepGet.md @@ -1,4 +1,4 @@ -### deepGetter +### deepGet Returns the target value in a nested JSON object, based on the keys array. @@ -6,7 +6,7 @@ Contrust the keys you want in the nested JSON object as an `Array`. Use `Array.prototype.reduce()` to get value from nested JSON object one by one. if the key exists in object, return target value, otherwise, return null. ```js -const deepGetter = (obj, keys) => keys.reduce((xs, x) => (xs && xs[x]) ? xs[x] : null, obj) +const deepGet = (obj, keys) => keys.reduce((xs, x) => (xs && xs[x]) ? xs[x] : null, obj) ``` ```js @@ -19,6 +19,6 @@ const data = { } } }; -deepGetter(data, ['foo', 'foz', idx]); // get 3 -deepGetter(data, ['foo', 'bar', 'baz', 8, 'foz']); // null +deepGet(data, ['foo', 'foz', idx]); // get 3 +deepGet(data, ['foo', 'bar', 'baz', 8, 'foz']); // null ``` diff --git a/tag_database b/tag_database index ee3ae6a54..4ab4a39a7 100644 --- a/tag_database +++ b/tag_database @@ -53,7 +53,7 @@ decapitalize:string,array,intermediate deepClone:object,recursion,intermediate deepFlatten:array,recursion,intermediate deepFreeze:object,recursion,intermediate -deepGetter:object,intermediate +deepGet:object,intermediate deepMapKeys:object,recursion,advanced defaults:object,intermediate defer:function,intermediate diff --git a/test/deepGet.test.js b/test/deepGet.test.js new file mode 100644 index 000000000..227a9a944 --- /dev/null +++ b/test/deepGet.test.js @@ -0,0 +1,40 @@ +const expect = require('expect'); +const {deepGet} = require('./_30s.js'); + +let idx = 2 +const data = { + level1: { + level2: { + level3: 'level3', + level3a: true, + level3b: [1, 2, 3, { level3c: 'level3c' }, 4, 5], + level3d: { + level4: [{ foo: 'foo' }, { bar: 'bar' }, { baz: 'baz' }] + } + } + } +}; + +test('deepGet is a Function', () => { + expect(deepGet).toBeInstanceOf(Function); +}); + +test('deepGet target success', () => { + expect(deepGet(data, ['level1', 'level2', 'level3'])).toEqual('level3'); +}); + +test('deepGet target and return null', () => { + expect(deepGet(data, ['level1', 'level2', 'foo', 'baz'])).toEqual(null); +}); + +test('deepGet target in an array', () => { + expect(deepGet(data, ['level1', 'level2', 'level3d', 'level4', 2, 'baz'])).toEqual('baz'); +}); + +test('deepGet target with variable key', () => { + expect(deepGet(data, ['level1', 'level2', 'level3b', idx])).toEqual(3); +}); + +test('deepGet target with empty Object', () => { + expect(deepGet({}, ['foo', 'bar', idx, 'foo'])).toEqual(null); +}); diff --git a/test/deepGetter.test.js b/test/deepGetter.test.js deleted file mode 100644 index a82406692..000000000 --- a/test/deepGetter.test.js +++ /dev/null @@ -1,40 +0,0 @@ -const expect = require('expect'); -const {deepGetter} = require('./_30s.js'); - -let idx = 2 -const data = { - level1: { - level2: { - level3: 'level3', - level3a: true, - level3b: [1, 2, 3, { level3c: 'level3c' }, 4, 5], - level3d: { - level4: [{ foo: 'foo' }, { bar: 'bar' }, { baz: 'baz' }] - } - } - } -}; - -test('deepGetter is a Function', () => { - expect(deepGetter).toBeInstanceOf(Function); -}); - -test('deepGetter target success', () => { - expect(deepGetter(data, ['level1', 'level2', 'level3'])).toEqual('level3'); -}); - -test('deepGetter target and return null', () => { - expect(deepGetter(data, ['level1', 'level2', 'foo', 'baz'])).toEqual(null); -}); - -test('deepGetter target in an array', () => { - expect(deepGetter(data, ['level1', 'level2', 'level3d', 'level4', 2, 'baz'])).toEqual('baz'); -}); - -test('deepGetter target with variable key', () => { - expect(deepGetter(data, ['level1', 'level2', 'level3b', idx])).toEqual(3); -}); - -test('deepGetter target with empty Object', () => { - expect(deepGetter({}, ['foo', 'bar', idx, 'foo'])).toEqual(null); -});