最近在项目终于到一个问题,比如我现在要遍历一个数组,数组里面是多个对象,像这个样子
var arr = [{id:1,text:1},{id:2,text:2}],当然后面还有很多个这样的对象,我们现在要往里面添加对象,添加的规则是:
1.当数组中有id相同的对象,覆盖此对象;s
2.当数组中没有id相同的对象,在数组中插入对象;
使用angular的童鞋都会想到,使用angular-foreach遍历数组中的每一个对象。对比每一项的id,如果id相同则覆盖,id不同则添加,于是有了如下代码:
如果传入数据,我们可以看到,一个数据还好说,多个数据它会添加多次。。着是怎么回事。。哦!原来是我把return写在外层了!这样每次都会进行比对,这样当然不行啦!于是咱们有了升级版:
好了,现在可以信心满满的传入数据了,只要满足了条件,我就给你return了,这次数据该对了吧!当然现实还是打脸了,为什么我return不了!!这就是angular-foreach的一个坑啦!它必须比对完所有的数据之后才会退出,如果你里面写了两个判断条件,那么恭喜你,入坑了,两个条件不管如何都会进入一个,当然不会得到我们想要的结果啦!那我们应该怎么改造?经过一番改造,我们有了如下函数:
这样子就能取到我们想要的东西咯!