企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# js数组合并 需求提出: > 购物车基于缓存实现,当用户在商城购买了商品之后,进入购物车页面,就会读取本地缓存, 和请求远程服务器的购物车记录。然后合并本地缓存和远程购车的记录的数组,相同id的商品,数量上加一。 ### js合并基础 第一种,使用js提供的concat ~~~ a = [11,22,33] b = [44,55,66] c = a.concat(b) c = [11,22,33,44,55,66] ~~~ 这样子,将消耗两倍的内存,因为 a+b = c ,也就是需要2c的内存才可以完成合并 第二种方式 使用for循环 ~~~ b.forEach(item => { a.push(item) }) ~~~ 这样子,只需要b+a,一个c的内存。 第三种方式,使用apply,在a的环境中运行push ~~~ a.push.apply(a,b) 上面的语句相当于,a.push.apply(a,[44,55,66]) ~~~ * 然而上面的方法没有并没有解决我的问题TT > 经过奋斗,我总算实现了。由于工作的原因。没来更新博客~~ > ### js数组去重 * 使用字典法去重 将得到一个对象或者数组 ~~~ var hash = {} var result = [] // 新增的购物车 var firstList = ["aa", "bbb", "cc"] // 相当于去服务器请求回来的 var secondList = ["bbb","cc","ddd"] // 先合并数组 secondList.push.apply(secondList, firstList) // 合并成功之后去重 secondList.forEach(item => { if(!hash[item]) { hash[item] = true result.push(item) } }) console.log(result) //购物车出来了 ~~~ * 对于去重,还有另一个方式只能对应简单的数组 ~~~ var c = ["aa","bb","cc", "cc"] var result = [] c.forEach(item => { if(c.indexOf(item) != -1) { result.push(item) } }) ~~~