目录
怎么实现数组的每一个值进行累加呢?我只想到了三种方法,比较基础,也比较常用的,如果还有其他方法可以传授一下给我,谢谢!
一、方法一:(使用for循环)
// 1.定义一个数组 var oldArray = [1,2,3,4,5,6,7]; // 2.定义一个初始值 0 let result = 0; // 2.for循环遍历,累加 for(let i = 0; i<oldArray.length;i++){ result += oldArray[i] } console.log(result,'result') //28 result
二、方法二:(使用reduce方法)
// 1.定义一个数组 var oldArray = [1,2,3,4,5,6,7]; // 2.定义一个新的变量接收值 let result = oldArray.reduce((a,b)=>{ return a + b; }) // 3.打印 console.log(result,'result') // 28 result
三、方法三:(使用forEach方法)
// 1.定义一个数组 var oldArray = [1,2,3,4,5,6,7]; // 2.定义一个变量 let result = 0; // 3.使用forEach()循环遍历和方法一类似 oldArray.forEach((item)=>{ result += item }) // // 3.打印 console.log(result,'result')
以上是我想到的比较常用且实用的方法!
附:js实现对象数组去重及数据叠加
HTML
<template> <div> <div v-for="item in list"> id:{{item.id}} - count:{{item.count}} </div> <br /> <div>点击按钮去重,count叠加</div> <button @click="getData">去重</button> </div> </template>
JavaScript
<script> export default { name: 'app', data(){ return { list: [ { id: 0, count: 2, }, { id: 1, count: 2, }, { id: 2, count: 2, }, { id: 3, count: 2, }, { id: 0, count: 2, }, { id: 2, count: 2, }, ] } }, methods: { getData(){ let listFilter = this.list // 定义map方法 const res = new Map(); // 过滤器过滤listFilter this.list = listFilter.filter((item) => { // res收集第一次存在的元素,如果存在,查看存在的位置,对list中的count进行叠加 if(res.has(item.id)){ for(let [key,value] of res){ if(key==item.id){ this.list[key].count += item.count } } } // 如果不存在,则添加到res中 return !res.has(item.id) && res.set(item.id, 1) }); } } } </script>