如何使用Lodash实现将数组对象的id作为键包裹其余属性
符合Lodash规范的实现方案
你原来的写法没有利用_.map本身直接返回新数组的特性,额外声明外部数组执行push操作属于冗余操作,也产生了不必要的副作用,不符合Lodash的函数式设计理念。
CoffeeScript 版本(适配你原示例的语法)
# 若需要保留原数据中的id字段 updated_data = _.map datas, (data) -> _.set {}, data.id, data # 若需要完全匹配你给出的目标格式,移除值对象内的id字段 updated_data = _.map datas, (data) -> _.set {}, data.id, _.omit(data, 'id')
JavaScript 版本
// 保留id字段 const updated_data = _.map(datas, data => ({ [data.id]: data })) // 移除id字段匹配目标输出 const updated_data = _.map(datas, data => ({ [data.id]: _.omit(data, 'id') }))
写法优势
- 没有外部变量修改操作,所有转换逻辑收敛在map回调内,符合纯函数特性
- 利用Lodash内置方法/JS原生计算属性完成对象构建,省略不必要的临时对象声明,代码简洁语义清晰
- 完全贴合Lodash的API设计规范,熟悉Lodash的开发者可以快速理解逻辑
内容的提问来源于stack exchange,提问作者sharingiscaring
相关产品推荐
相关产品推荐

