如何为从数组转换而来的对象指定自定义键名?
解决方案
你可以通过以下几种方式实现将数组值与指定字段名映射为目标对象:
方法一:使用Array.reduce(灵活适配任意长度的数组)
这种方法适合字段数组和值数组长度不固定的场景,能自动对应每个位置的键和值:
let FIELDS = ['id', 'first_name', 'last_name', 'email'] let values = ['123','John','Doe', null] let obj = FIELDS.reduce((result, key, index) => { result[key] = values[index] return result }, {}) console.log(obj) // {id: '123', first_name: 'John', last_name: 'Doe', email: null}
方法二:解构赋值直接映射(适合字段固定的场景)
如果字段数量固定,直接解构数组值后再组装对象更直观:
let FIELDS = ['id', 'first_name', 'last_name', 'email'] let [id, first_name, last_name, email] = ['123','John','Doe', null] let obj = { id, first_name, last_name, email } console.log(obj) // {id: '123', first_name: 'John', last_name: 'Doe', email: null}
说明
你原本的let {...obj} = ['123','John','Doe', null]写法,是将数组作为类数组对象解构,所以对象键是数组的索引(0、1、2、3)。要替换成指定字段名,核心是把FIELDS数组的每个元素和值数组对应位置的元素关联起来,生成新的键值对对象。
内容的提问来源于stack exchange,提问作者Markus Hayner
相关产品推荐
相关产品推荐

