From 1ad860ccb2711ed9d1991fa214465e1278fc1a22 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 7 Apr 2020 11:35:24 +0800 Subject: [PATCH] childrenMap --- childrenMap.js | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 childrenMap.js diff --git a/childrenMap.js b/childrenMap.js new file mode 100644 index 0000000..5d964fc --- /dev/null +++ b/childrenMap.js @@ -0,0 +1,38 @@ +const baseType = ['number', 'string', 'boolean'] +function childrenMap(children, cb) { + let result + if (baseType.indexOf(typeof children) > -1) { + result = [children].map(item => cb(item)) + } else if (Array.isArray(children)) { + result = children.flat(Infinity).map(item => { + if (baseType.indexOf(typeof item) > -1) { + return cb(item) + } else { + return childrenMap(item, cb) + } + }) + } else if (typeof children === 'object') { + result = Object.keys(children).map(item => { + if (baseType.indexOf(typeof children[item]) > -1) { + return cb(children[item]) + } else { + return childrenMap(children[item], cb) + } + }) + } + return result.flat(Infinity) +} + + +const b = childrenMap('a', item => item + '#') +const c = childrenMap({ name: 'ceshi' }, item => item + '#') +const d = childrenMap([1], item => item + '#') +const e = childrenMap([1, [2, 3]], item => item + '#') +const f = childrenMap({ name: 'ceshi',arr:[99] }, item => item + '#') +const g = childrenMap([1, [2, 3],{age:10}], item => item + '#') +console.log(b) +console.log(c) +console.log(d) +console.log(e) +console.log(f) +console.log(g) \ No newline at end of file -- Gitee