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

JS对象数组map按指定顺序取值如何避免重复书写属性名

实现方案

完全可以实现,将属性列表存为数组后嵌套一层map遍历取对应值即可,代码如下:

const data = [
  {
    amount: '100',
    user: 'admin',
    date: 'March 6, 2019'
  },
  {
    amount: '120',
    user: 'admin',
    date: 'March 6, 2019'
  },
  {
    amount: '80',
    user: 'admin',
    date: 'March 7, 2019'
  },
  {
    amount: '200',
    user: 'admin',
    date: 'March 7, 2019'
  }
];

// 把属性名按需求顺序存为数组
const keys = ['amount', 'user', 'date'];
// 遍历每个对象,再按属性名顺序取值生成新数组
const result = data.map(item => keys.map(key => item[key]));

console.log(result);

输出结果和你原有手写解构的实现完全一致。


补充说明

  • 如果你需要用字符串格式定义属性列表,只需多做一步拆分处理即可,后续逻辑不变:const keys = "amount, user, date".split(', ')
  • 你给出的伪代码语法无法直接生效,ES6对象解构暂不支持传入变量批量匹配动态属性名,必须通过显式遍历属性名数组的方式实现需求
  • 如果需要兼容对象缺属性的场景,可以修改取值逻辑做容错处理:keys.map(key => item?.[key] ?? ''),避免属性不存在时返回undefined

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:45:03