数组的filter过滤方法将对象数组内容改变——js基础积累——犯傻记录

最近在写后台管理系统,遇到一个多种类型报价的功能,内容不难,但是需要各种判断加处理。有时候就会不小心出现犯傻的情况。。。

1.场景

需要在一个对象数组中过滤出符合条件的对象。

let arr = [{
    
    
	id:7,
	code:'ZP001',
	selectCode:'ABCD'
},{
    
    
	id:8,
	code:'ZP002',
	selectCode:'EFGH'
}]

从上面的数组中查找出code='ZP002'的内容。

办法很简单:就是通过数组的filter过滤方法

let obj = arr.filter(item=>item.code=='ZP002')[0];

此时的obj就是符合条件的对象了。

但是我这边发现,使用过滤方法后,数组中的每一项的code都变成了ZP002,这就导致最后我拿到的obj永远是数组的第一项,出现了错误。

2.出现问题:过滤方法后,数组中的每一项的code都一样了

此时的arr打印出来是[{ id:7, code:'ZP002', selectCode:'ABCD' },{ id:8, code:'ZP002', selectCode:'EFGH' }]

3.发现问题

数组的fiiter过滤方法是不会改变原数组的,但是目前出现了原数组改变的情况,百度后发现,也有人跟我遇到同样的问题:

在这里插入图片描述
我这边是属于第二种情况:

我实际写的过滤代码如下:

let obj = arr.filter(item=>item.code='ZP002')[0];

少写了一个=,。。。。

深浅拷贝的问题也有可能导致这种情况的发生。所以一定要注意。

完成!!!

猜你喜欢

转载自blog.csdn.net/yehaocheng520/article/details/124661092