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

如何基于键而非索引从JavaScript对象数组中提取指定属性?

如何通过键名提取对象数组指定属性生成新数组?

你可以利用Array.prototype.map()方法结合键名访问的方式实现,完全不依赖对象属性的顺序,以下是几种实用方案:

方案1:对象解构(最简洁)

这是ES6+里最直观的写法,直接解构出需要的属性并返回新对象:

const items = [
  { product: 'prodOne', quantity: 3, sending: 100, receiving: 50 },
  { product: 'prodTwo', quantity: 4, sending: 50, receiving: 100 },
  { product: 'prodThree', quantity: 8, sending: 100, receiving: 100 }
];

const itemsRed = items.map(({ product, quantity }) => ({ product, quantity }));

不管原对象里的属性顺序怎么调整,只要键名不变,就能正确提取目标属性。

方案2:手动创建新对象(适合新手理解)

如果对解构不太熟悉,也可以直接通过键名访问属性,手动构建新对象:

const itemsRed = items.map(item => {
  return {
    product: item.product,
    quantity: item.quantity
  };
});

逻辑直白,每一步都清晰可控,同样不依赖属性顺序。

方案3:封装通用提取函数(复用性强)

如果需要多次提取不同的属性组合,可以封装一个通用的pick函数,动态提取指定键名:

function pick(obj, keys) {
  const result = {};
  keys.forEach(key => {
    result[key] = obj[key];
  });
  return result;
}

// 使用示例
const itemsRed = items.map(item => pick(item, ['product', 'quantity']));

后续需要提取其他属性时,只需要修改第二个参数的键数组即可,比如['product', 'sending'],非常灵活。

以上三种方法都能生成你需要的itemsRed数组,完全摆脱对属性索引位置的依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 10:17:14