JavaScript如何将含fieldName/fieldValue的对象数组转换为键值对对象
数组转指定键值对象的实现方法
核心逻辑:遍历原数组的每一项,将每项的fieldName值作为结果对象的键,对应fieldValue作为键值,依次组装成最终结构即可。
可直接复用的简洁实现
1. 工程通用高性能写法
基于数组原生reduce方法实现,遍历过程直接修改累加器对象,无额外重复的对象创建开销,即使原数组长度较大也能保持稳定性能:
const filter = [ { fieldName: "userid", fieldValue: "12345" }, { fieldName: "username", fieldValue: "myname" } ]; const filterOut = filter.reduce((acc, item) => { acc[item.fieldName] = item.fieldValue; return acc; }, {});
执行完成后,filterOut的结构完全匹配预期的输出要求。
2. 极简短代码写法
如果处理的数组体量很小,可以结合对象解构和展开运算符,把逻辑压缩为一行形式:
const filterOut = filter.reduce( (acc, { fieldName: key, fieldValue: value }) => ({ ...acc, [key]: value }), {} );
注意:这种写法每轮循环都会生成一个全新的对象,数据量较大时会产生不必要的性能消耗,更适合小数据集场景。
边界规则说明
如果原数组中存在重复的fieldName值,最终结果中后出现的项会覆盖前面同键的内容,这是这类结构转换的默认行为。如果需要对重复键做合并、保留原值等特殊处理,可以在赋值逻辑里增加对应的判断分支。
内容的提问来源于stack exchange,提问作者Kish
相关产品推荐
相关产品推荐

