方法一:js数组id去重,value值相加问题

来源:https://www.jianshu.com/p/8f79e31b46ed

    // js
let arr = [
{
id: 1,
value: 5
},
{
id: 2,
value: 3
},
{
id: 3,
value: 4
},
{
id: 1,
value: 3
},
{
id: 2,
value: 3
}
]; let newArr = [];
arr.forEach(el=> {
const res = newArr.findIndex(ol=> {
return el.id === ol.id;
});
if (res!== -1) {
newArr[res].value = newArr[res].value + el.value;
} else {
newArr.push(el);
}
});
 
问题:原来的数组arr中的数据也改变了。怎么做才能让原来的数组保持不变呢?
 
来源https://www.cnblogs.com/juneling/p/9149969.html
适用 多层 数组嵌套的深拷贝
var ary2 = JSON.parse(JSON.stringify(ary1));
  //此方法适用于Oject的深度拷贝,因为Array属于Oject类型,所以也适用于此处;
  //需要注意的是:作为Oject的深度拷贝时,要复制的function会直接消失,所以这个方法只能用在单纯只有数据的对象。
 

方法二:js数组去重

来源:https://www.cnblogs.com/jlyuan/p/11530877.html

1.基本数据类型数据去重

 var list = [1, 2, 1, 3, 2, 2,4]
var res = list.filter((e,i)=>list.indexOf(e)==i)
console.log(res)

2.引用数据类型去重(实际开发中比较常见)

var list = [{id:110,name:"java"},{id:111,name:"javascript"},{id:110,name:"java"}]
var res = []
// 实现思路:遍历list数组,如果不存在res数组中,就添加到res
list.forEach(item=>{
let flag = res.some(e=>{
if(item.id === e.id){
return true;
}
})
if(!flag){
res.push(item)
}
}) console.log(res)
 
 

js 数组去重求和 (转载)的更多相关文章

  1. js数组去重常用方法

    js数组去重是面试中经常会碰到的问题,无论是前端还是node.js数组常见的有两种形式,一种是数组各元素均为基本数据类型,常见的为数组字符串格式,形如['a','b','c'];一种是数组各元素不定, ...

  2. js数组去重的4种方法

    js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.inde ...

  3. JS 数组去重(数组元素是对象的情况)

    js数组去重有经典的 几种方法 但当数组元素是对象时,就不能简单地比较了,需要以某种方式遍历各值再判断是否已出现. 因为: 1.如果是哈希判断法,对象作哈希表的下标,就会自动转换成字符型类型,从而导致 ...

  4. js 数组去重小技巧

    js 数组去重小技巧 Intro 今天遇到一个问题,需要对数据进行去重,想看一下有没有什么比较方便的方法,果然有些收获. Question 问题描述: 我有一个这样的数据: [ { "Pro ...

  5. JS数组去重的几种常见方法

    JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...

  6. js数组去重五种方法

    今天来聊一聊JS数组去重的一些方法,包括一些网上看到的和自己总结的,总共5种方法(ES5). 第一种:遍历数组法 这种方法最简单最直观,也最容易理解,代码如下: var arr = [2, 8, 5, ...

  7. js数组去重的方法(转)

    JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...

  8. js 数组去重方法汇总

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  9. js数组去重 javascript版

    //js数组去重 //思路: // 1.放入第一个元素 // 2.放入第n个元素,和第n个之前的元素就行比较,如果有重复,则跳过.没有重复就加入数组中 // 3.返回新的去重后数组 Array.pro ...

随机推荐

  1. Roberts算子

    https://blog.csdn.net/likezhaobin/article/details/6892176 https://zhuanlan.zhihu.com/p/35032299 Robe ...

  2. 006-nginx.conf详解-error_page 使用

    一.概述 nginx指令error_page的作用是当发生错误的时候能够显示一个预定义的uri 1.1.使用步骤 更改nginx.conf在http定义区域加入: proxy_intercept_er ...

  3. python while 1 然后pass会发生什么?

    下面的代码,会使32核linux服务器志强e5的cpu使用率达到3200%,然后别的什么程序都跑不了. 如果windows,cpu使用率会达到100%.这是计算方式有点区别. 个人计算机,除非你是8路 ...

  4. [LeetCode] 769. Max Chunks To Make Sorted 可排序的最大块数

    Given an array arr that is a permutation of [0, 1, ..., arr.length - 1], we split the array into som ...

  5. 最常见的Java面试题及答案汇总(四)

    反射 57. 什么是反射? 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力 Java反射: 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能 ...

  6. [IISNode] 如何在IIS7/8下,配置一个可以通过IIS访问NodeJS的web项目

    参考了一下几篇很给力的文章,在每篇文章中,都学到了解决遇到的问题的答案: (1)用iisnode模块,让你的Node.js应用跑在Windows系统IIS中 (2)让IIS能够运行Nodejs (3) ...

  7. 2019 CSP-J 游记(CQ LNBS考场 的退役之战)

    T0.10 爆零之战 已经不是第一次参加NOIP了(哦,关于兔子也NOIP了) 这次比赛的话,感觉考场很温馨,键盘很舒适,老师很友善,下次还会来.(哦不,下次来不了了,即将提前退役[大雾]) 刚刚文化 ...

  8. [转帖]超能课堂(207) SD卡标准错综复杂,到底该认哪一个?

    超能课堂(207)SD卡标准错综复杂,到底该认哪一个? https://www.expreview.com/71505.html 开始的地方 SD容量等级 SD标准(SDSC) SDHC SDXC S ...

  9. 通过fsockopen()方法从中国福彩网获取双色球历史中奖数据

    # 以下代码基于 CI 框架 # public function history_draw($page = 0) { set_time_limit(0); $page++; $up2now = dat ...

  10. sublime_python编译_输出台中文为乱码

    Evernote Export sublime_python编译_输出台中文为乱码 创建时间: 2019-10-17 星期四 10:52 作者: 苏苏 标签: sublime, 乱码       问题 ...