递归及去重
之前写了个递归,但是后台返回数据的原因,会导致出现重复的数据.还好,递归的方法是个共有的方法,不用改太多的东西.
之前的返回数据的递归是这样的.
这个就是一个简单的递归,但是现在出现了数据重复的问题,所以得加点代码,如下
可以发现,也就是在push
的时候加上了判断,判断是否push
过这个item
,没有就再push
.
有心人会发现,判断重复是通过includes
来处理的.includes
采用的是SameValueZero
策略来判断相等的.可以满足绝大多数场景
includes
和===
的区别就是对应NaN
的判断.
严格相等(Strict Equality Comparison
)判断的NaN
,是不相等的.
indexOf
判断的策略也是Strict Equality Comparison
,所以这里返回了-1
但是includes
却是可以的. [NaN].includes(NaN) //true
.
类似includes
的这种策略(SameValueZero
)的还有Map, Set
等.
Last updated