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

如何从对象数组的单个对象中提取最后三个属性值?

解决方法

你之前用myValues.slice(-3)没用,是因为这个方法是对数组元素做切片,而你的数组只有1个对象元素,返回的还是原数组,根本没处理对象里的属性。要提取对象的最后三个属性,得换个思路:

步骤1:取出数组里的单个对象

先从数组中拿到唯一的目标对象:

const targetObj = myValues[0];

步骤2:获取对象的最后三个属性名

用Object.keys()拿到对象的所有属性名(ES6+会按属性定义顺序返回),再用slice(-3)截取最后三个:

const lastThreeProps = Object.keys(targetObj).slice(-3) as ('ownerSurname' | 'color' | 'bark')[];

这里加类型断言是为了让TypeScript识别具体属性名,避免类型模糊。

步骤3:生成只包含目标属性的新对象

用reduce遍历属性名,组装成新对象:

const newData = lastThreeProps.reduce((result, prop) => {
  result[prop] = targetObj[prop];
  return result;
}, {} as Pick<MyValues<string>, 'ownerSurname' | 'color' | 'bark'>);

完整代码示例

const myValues: MyValues<string>[] = [
  {
    name: "Lucky",
    surname: "Luck",
    age: "3",
    breed: "Shepherd",
    owner: "Paul",
    ownerSurname: "Luck",
    color: "Brown",
    bark: "All the time",
  },
];

const targetObj = myValues[0];
const lastThreeProps = Object.keys(targetObj).slice(-3) as ('ownerSurname' | 'color' | 'bark')[];
const newData = lastThreeProps.reduce((result, prop) => {
  result[prop] = targetObj[prop];
  return result;
}, {} as Pick<MyValues<string>, 'ownerSurname' | 'color' | 'bark'>);

<MyComponent value={newData}/>

简化写法(属性顺序固定时)

如果确定这三个属性永远是对象的最后三个,也可以直接解构:

const { ownerSurname, color, bark } = myValues[0];
const newData = { ownerSurname, color, bark };

这种写法更简洁,但仅适合属性结构固定的场景,后续属性顺序或数量变化时会失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:23:19