Immutable JS 如何将嵌套Map集合转换为指定结构List并提取name字段
实现方案
你可以直接基于Immutable自身的遍历和更新方法完成转换,无需先转成普通JS对象处理,示例代码如下:
import { fromJS } from 'immutable'; // 你已经通过fromJS转换完成的Immutable结构数据 const immutableData = fromJS([ {name: 'john', surname: 'smith', children: [{name: 'sam'}, {name: 'ben'}]}, {name: 'jane', surname: 'jones', children: [{name: 'tim'}, {name: 'amy'}]} ]); // 核心处理逻辑 const result = immutableData.map(userItem => { // 提取children数组中每个对象的name字段 const simplifiedChildren = userItem.get('children').map(child => child.get('name')); // 替换原children字段,返回新的Immutable对象 return userItem.set('children', simplifiedChildren); }); // 如果需要得到普通JS格式的结果,调用toJS即可 const plainResult = result.toJS();
逻辑说明
- 外层遍历
immutableData这个Immutable List,拿到每一条用户数据(Immutable Map格式) - 对每条用户数据的
children字段做二次遍历,提取所有子项的name属性,生成仅包含字符串的新Immutable List - 调用
set方法更新原用户数据的children字段,Immutable的不可变特性会自动返回全新的结构,不会修改原始数据 - 如果后续业务需要使用普通JS对象操作,直接调用处理后结构的
toJS()方法就能得到你要求的目标格式
内容的提问来源于stack exchange,提问作者sheeni
相关产品推荐
相关产品推荐

