如何将指定数组转换为以fieldApiName为键的Object键值对?
数组转指定键值对对象的实现方法
给定如下JavaScript数组:
let records = [ { "fieldApiName": "Store__c", "enabled": true }, { "fieldApiName": "Portal__c", "enabled": false } ];
要将其转换为以fieldApiName的值为键、enabled的值为对应值的对象(目标格式:{Store__c: true, Portal__c: false}),可以用以下几种方法实现:
方法1:使用Array.reduce()
这是最常用的转换方式,通过累加器逐步构建目标对象:
const result = records.reduce((acc, curr) => { acc[curr.fieldApiName] = curr.enabled; return acc; }, {}); console.log(result); // 输出:{Store__c: true, Portal__c: false}
逻辑说明:初始化一个空对象作为累加器acc,遍历数组中的每个元素curr,将curr.fieldApiName作为键、curr.enabled作为值添加到acc中,最后返回累加器。
方法2:使用Array.forEach()
这种方式逻辑更直观,手动遍历数组并赋值:
const result = {}; records.forEach(item => { result[item.fieldApiName] = item.enabled; }); console.log(result); // 输出:{Store__c: true, Portal__c: false}
逻辑说明:先创建空对象result,遍历数组的每个元素,直接给result添加对应的键值对。
方法3:使用Object.fromEntries()(ES2019+)
这种方式更简洁,先将数组转换为[键, 值]的二维数组,再转成对象:
const result = Object.fromEntries( records.map(item => [item.fieldApiName, item.enabled]) ); console.log(result); // 输出:{Store__c: true, Portal__c: false}
逻辑说明:先用map把每个对象转成[fieldApiName, enabled]的数组,再通过Object.fromEntries将二维数组直接转换为键值对对象。
内容的提问来源于stack exchange,提问作者vijay
相关产品推荐
相关产品推荐

