求个数据结果解析递归算法,不要求很复杂 数据结构如下: data = [{ value: 'Root', defaultValue: '根节点', key: '0-1', parentKey: '0', isEditable: false, title: 'xxx' children: [{ defaultValue: '子树', isEditable: false, key: '0-10.4061361533484542', parentKey: '0-1', value: '111', title: 'xxx', children: [{ defaultValue: '子子树', isEditable: false, key: '0-10-1.92052037502357025', parentKey: '0-1', value: '111', title: 'xxx' } }, { defaultValue: '子树', isEditable: false, key: '0-10.6243359336024665', parentKey: '0-1', value: '222', title: 'xxx' }] }] 根据上面的数据结构,想把所有级别里面的 title 删掉,保证数据结构不变,只 delete 整个 title,求大神给个好的处理办法
1
newmoyupoi OP 忘记说了,现在用的框架 react,如果有好的解法可以支付现金作为回报
|
2
jadehare 2019-08-08 17:24:26 +08:00 1
转成 json 找字段 title 删掉再转回来
|
3
newmoyupoi OP @jadehare #2 牛 x !!!
|
4
newmoyupoi OP @jadehare #2 如果 title 里面有 function 转不成 json 字符串呢?
|
5
octree 2019-08-08 17:37:57 +08:00 1
大兄弟你这个有语法错误。。。。
我感觉这样应该可以。 function mapValues(obj, transform) { let result = {} for (let key in obj) { result[key] = transform(obj[key]) } return result } function removeTitleRecursively(any) { if (Array.isArray(any)) { return any.map(removeTitleRecursively) } else if (typeof any === 'object') { delete any.title return mapValues(any, removeTitleRecursively) } else { return any } } |
6
newmoyupoi OP data = [{
value: 'Root', defaultValue: '根节点', key: '0-1', parentKey: '0', isEditable: false, title: 'xxx', children: [{ defaultValue: '子树', isEditable: false, key: '0-10.4061361533484542', parentKey: '0-1', value: '111', title: 'xxx', children: [{ defaultValue: '子子树', isEditable: false, key: '0-10-1.92052037502357025', parentKey: '0-1', value: '111', title: 'xxx' }] }, { defaultValue: '子树', isEditable: false, key: '0-10.6243359336024665', parentKey: '0-1', value: '222', title: 'xxx' }] }] 修改了下,这个语法没错误 |
7
octree 2019-08-08 17:51:21 +08:00 1
@newmoyupoi 上面代码应该发给你了
|
8
newmoyupoi OP @octree #7 调用 removeTitleRecursively(数据)不是很好使,any.map(removeTitleRecursively)这个里面的 removeTitleRecursively 在 react 里面改成 this.removeTitleRecursively?
|
9
octree 2019-08-08 18:11:18 +08:00 1
@newmoyupoi 这两个函数放 React Component
外面就行了吧。 |
10
newmoyupoi OP @octree #7 可以了 搞定 感谢 ing~
|
11
xtray 2019-08-08 20:25:13 +08:00 via Android
直接用正则或 sed 删不就行了
|
12
crs0910 2019-08-08 22:12:59 +08:00 1
const removeTitle = data => JSON.parse(JSON.stringify(data), (k, v) => k === 'title' ? undefined : v)
|
13
newmoyupoi OP @crs0910 #12 不行,去掉 title 的目的不是为了去掉这个字段,而是 title 里面是个 function,无法用 JSON.stringify 做转换,所以 JSON.stringify(data)这一步是不行的
|
14
crs0910 2019-08-09 19:39:14 +08:00
@newmoyupoi #13 不明白你的意思。哈哈
|
15
newmoyupoi OP @crs0910 #14 ![]( )
|