You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS新手求助:将指定结构数组转换为自定义对象

解决方法

你用map得到数组是因为map本身的返回值就是数组,而你需要的是键为字段名的对象,推荐用Object.entries配合reduce来实现需求:

const payload = {left: ['name', 'phone'], right: ['address']};

const columns = Object.entries(payload).reduce((acc, [pinnedSide, cols]) => {
  cols.forEach(col => {
    acc[col] = { pinned: pinnedSide };
  });
  return acc;
}, {});

const result = { columns };
console.log(result);

代码说明:

  • Object.entries(payload) 将原对象转换为键值对数组:[['left', ['name','phone']], ['right', ['address']]]
  • reduce 初始化一个空对象作为累加器 acc,遍历每个键值对
  • 对每个方向对应的字段数组,逐个给累加器添加属性:键为字段名,值为包含pinned方向的对象
  • 最后将生成的columns对象包装成你需要的结构

如果你习惯分开处理左右方向,也可以用reduce分别生成左右对象再合并:

const payload = {left: ['name', 'phone'], right: ['address']};

const leftColumns = payload.left.reduce((acc, col) => ({...acc, [col]: {pinned: 'left'}}), {});
const rightColumns = payload.right.reduce((acc, col) => ({...acc, [col]: {pinned: 'right'}}), {});

const columns = {...leftColumns, ...rightColumns};
const result = { columns };

这个方式是先把左右数组各自转成目标格式的对象,再用扩展运算符...合并成最终的columns对象,效果和第一种方法一致。

内容的提问来源于stack exchange,提问作者catzndogz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 18:05:17