TS中 对于 对象中某属性的统计

TS中 对于 对象中某属性的统计

数据

const formData = [
  {
      "id": 4291,
      "platform": "苏宁",
  },
  {
      "id": 822,
      "platform": "淘宝",
  },
  {
      "id": 600,
      "platform": "京东",
  },
]

需求

  1. 使用ts
  2. 统计formData中platform的种类与数量

实现代码

// Record类型 键值的类型都固定了
type CountResult = Record<string, number>;

const platformStatistics = (data: Data[]): CountResult  => {
  // 使用reduce方法遍历
  return data.reduce((acc, cur) => {
    const platform = cur.platform;
    // 如果是一般的遍历方法 acc[platform]这种使用方法在ts中是无法通过检查的 但是reduce中的可以
    if (acc[platform]) {
      acc[platform]++;
    } else {
      acc[platform] = 1;
    }
    return acc;
  }, {} as CountResult);
}

说明

Reduce方法

reduce(callbackFn, initialValue)
  1. 第一个参数是遍历方法callbackFn,callbackFn的参数如下所示:
    1. acc:上一次调用callbackFn返回的结果,如果没有指定initiaValue,则为array[0]
    2. curr:当前元素的值
    3. index:curr在数组中的索引位置
    4. array:数组本身
  2. 第二个参数是初始值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值