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
相关产品推荐
相关产品推荐

