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

TypeScript如何用筛选后数组替换目标对象的values属性数组

TypeScript 实现方案

首先先定义对应的TS类型约束结构:

// 定义values数组单条数据的类型
interface ValueItem {
  count: number;
  id: string;
  name: string;
}

// 定义外层统计对象的类型
interface AccountStat {
  count: number;
  id: string;
  name: string;
  values: ValueItem[];
}

方案1:直接修改原对象

如果允许修改原始对象,直接对values属性赋值即可,注意同步更新外层count字段的取值(根据业务逻辑二选一即可):

// 原始对象
const originStat: AccountStat = {
    "count": 8,
    "id": "accountId",
    "name": " Account Id",
    "values": [
        {"count": 2,"id": "1234456789000","name": "1234456789000"},
        {"count": 1,"id": "135792468045","name": "135792468045"},
        {"count": 1,"id": "309983110022","name": "309983110022"},
        {"count": 2,"id": "432112426686","name": "432112426686"},
        {"count": 1,"id": "6ee26149-a156-4665-bd26-a6e46b49a70f","name": "6ee26149-a156-4665-bd26-a6e46b49a70f"},
        {"count": 1,"id": "927b48ce-efe4-4c20-98f0-ec6c54f59b45","name": "927b48ce-efe4-4c20-98f0-ec6c54f59b45"}
    ]
};

// 筛选后的数组
const filteredValues: ValueItem[] = [
    {"count": 2,"id": "432112426686","name": "432112426686"},
    {"count": 2,"id": "1234456789000","name": "1234456789000"}
];

// 替换values属性
originStat.values = filteredValues;

// 同步更新外层count:如果count代表values数组的长度
originStat.count = filteredValues.length;

// 若外层count代表所有子项count的累加和,使用如下逻辑替换即可
// originStat.count = filteredValues.reduce((sum, item) => sum + item.count, 0);

方案2:不可变更新(不修改原对象)

如果用在React状态管理、函数式编程等不允许修改原始数据的场景,可通过解构赋值生成新对象:

const updatedStat: AccountStat = {
    ...originStat,
    values: filteredValues,
    // 按需更新count,同上二选一
    count: filteredValues.reduce((sum, item) => sum + item.count, 0)
};

内容的提问来源于stack exchange,提问作者Curious_k.shree

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:27:03