js filter方法想返回满足条件的数据的同时,处理数据数据怎么弄?

js filter方法想返回满足条件的数据的同时,处理数据数据怎么弄?
想要数组中每一个对象中type属性为1和2的,同时想处理maxValidWgt为一位小数怎么弄,现在可以筛选,小数位数没受控制,有什么好办法吗

this.RegionContent=response.data.filter((data:any)=> {
 data.maxValidWgt?parseInt(data.maxValidWgt).toFixed(1):'--';
 return data.type === '1' || data.type === '2'
 })
阅读 4.4k
3 个回答
const arr = [{maxValidWgt: 12.122,type: 98},
            {maxValidWgt: 123.23,type: 2},
            {maxValidWgt: 231.23,type: 1}];
const res = arr.reduce((acc, val) => {
  if(val && val.type < 3 ) {
    acc.push({
      ...val,
      maxValidWgt: val.maxValidWgt.toFixed(1)})
  }
  return acc
}, [])

//console.log(res)
this.RegionContent = response.data.filter((data: any) => {
    data.maxValidWgt = data.maxValidWgt ? parseInt(data.maxValidWgt).toFixed(1) : '--';
    return data.type === '1' || data.type === '2';
});

补充:

楼下 @whiteplayer 说的其实是对的,filter / map / forEach / reduce 这些方法其实都不改变原数组。

只不过你这个数组里的元素恰好都是引用类型罢了,可以用我上面写的这种“讨巧”;如果是值类型,正确的做法应该是先 filter 再 map。

值类型和引用类型的区别,请自行百度。

filter实现不了吧,它不改变原始数组,也就是说你在方法里面的操作只是改变了return时候可能会用到的判断条件,实际上return的还是原始数组的每一项。
图片描述

更新:emmm....记了filter不会改变原始数组也没去深究,不说了,我要翻源码去了
1.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题