如何更简洁地将数组对象布尔值转为字符串?含Lodash方案咨询
更简洁的数组布尔值转字符串实现(含Lodash方案)
你的原始实现完全没问题,但现代JS和Lodash都能提供更简洁、可读性更强的写法,下面分几种情况给你介绍:
原生JavaScript方案
1. 直接修改原数组(替代for循环)
用Array.prototype.forEach遍历数组,代码更紧凑,逻辑和你原来的一致:
const dummyResult = [ { id: 1, value: false }, { id: 2, value: true }, { id: 3, value: 'text' } ] dummyResult.forEach(item => { if (typeof item.value === 'boolean') { item.value = item.value.toString(); } });
2. 返回新数组(纯函数,不修改原数据)
如果不想改动原始数组,推荐用Array.prototype.map结合对象展开语法,生成一个全新的数组:
const dummyResult = [ { id: 1, value: false }, { id: 2, value: true }, { id: 3, value: 'text' } ] const transformedResult = dummyResult.map(item => ({ ...item, value: typeof item.value === 'boolean' ? item.value.toString() : item.value }));
这种方式更符合函数式编程的思路,避免副作用,适合需要保留原数据的场景。
Lodash方案
如果你的项目已经引入了Lodash,可以利用它的工具函数进一步简化代码:
1. 修改原数组
用_.forEach遍历,结合_.update来处理指定字段的值:
const dummyResult = [ { id: 1, value: false }, { id: 2, value: true }, { id: 3, value: 'text' } ] _.forEach(dummyResult, item => { _.update(item, 'value', val => typeof val === 'boolean' ? val.toString() : val); });
2. 返回新数组(无副作用)
用_.map生成新数组,配合_.set来安全地设置字段值:
const dummyResult = [ { id: 1, value: false }, { id: 2, value: true }, { id: 3, value: 'text' } ] const transformedResult = _.map(dummyResult, item => _.set({...item}, 'value', typeof item.value === 'boolean' ? item.value.toString() : item.value) );
如果你的数据结构更复杂(比如嵌套对象),Lodash的路径处理能力会更有优势。
内容的提问来源于stack exchange,提问作者Cristian Muscalu
相关产品推荐
相关产品推荐

