diff --git a/src/react/ReactChildren.js b/src/react/ReactChildren.js index bbc07d81edaad3705a3dca0942e1cbc01bff2624..e85f900484f7650f7fe4e37766123c85aedf37d6 100644 --- a/src/react/ReactChildren.js +++ b/src/react/ReactChildren.js @@ -1,6 +1,21 @@ function mapChildren(children, func, context) { //TODO实现此mapChildren方法 - return children; + const array = [] + children = Array.isArray(children) ? children : [children] + function fn(child, key, flag = false) { + child.forEach((item, index) => { + if (Array.isArray(item)) { + let newKey = key ? item.key ? key + '/' + item.key : flag ? key + `.${index}` : key + '/' + `.${index}` : `.${index}` + fn(item, newKey) + } else { + const res = func(item) + res.key = item.key ? key + '/' + `.$${item.key}` : flag ? key + `.${index}` : key + '/' + `.${index}` + array.push(res) + } + }) + } + fn(children, '', true) + return array; } export {