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

Angular中如何将分类数组转换为仅包含ID的纯数值数组

解决Angular中Categories数组转纯ID数组的问题

嘿,我明白你现在的需求——把接口返回的categories数组转换成[1,2]这样的纯ID数组对吧?你之前用map的时候不小心把每个元素包成了{id: 1}这样的对象,所以才得到了不符合预期的结果。

问题出在哪?

你之前的map写法:

let selectedList = x.categories.map((elem: any) => ({ id: elem.id }));

这里你返回的是一个包含id属性的新对象,所以最终得到的是对象数组。但我们只需要直接提取每个元素的id值就行。

正确的实现方式

如果你的categories数组里所有元素都需要提取id(不需要过滤),直接修改map的返回值:

let selectedList = x.categories.map((elem: any) => elem.id);

这样就能得到[1,2]的纯ID数组了。

结合你原来的过滤逻辑

看你原来的代码里有个filter条件:data.pivot.service_id == this.id,如果需要先过滤出符合条件的categories,再提取id,那要先做filter再做map,顺序别搞反:

this.pijatService
  .getById(this.id)
  .pipe(first())
  .subscribe((x: any) => {
    this.form.patchValue(x);
    console.log(x);
    this.form.value.nomor_telepon = x.telepon.nomor_telepon;
    // 先过滤出符合条件的分类,再提取id
    this.form.value.category_id = x.categories
      .filter((data: any) => data.pivot.service_id == this.id)
      .map((data: any) => data.id); // 这里直接返回id
  });

验证结果

这样处理后,this.form.value.category_id就会变成你想要的纯ID数组:[1,2](如果过滤后的结果是这两个元素的话)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 09:02:33