vue 1个数组对象去重相加
时间: 2023-05-31 13:07:46 浏览: 80
可以使用ES6的Set和数组的reduce方法来实现。代码示例如下:
```javascript
const arr = [{id: 1, value: 10}, {id: 2, value: 5}, {id: 1, value: 6}, {id: 3, value: 8}, {id: 2, value: 3}];
const result = Array.from(arr.reduce((acc, cur) => acc.set(cur.id, (acc.get(cur.id) || 0) + cur.value), new Map()), ([id, value]) => ({id, value}));
console.log(result); // [{id: 1, value: 16}, {id: 2, value: 8}, {id: 3, value: 8}]
```
这段代码中,首先用 reduce 方法遍历数组,利用 Map 对象记录每个id对应的value值相加后的结果。然后通过 Array.from 将 Map 对象转为数组,同时将每个 id-value 对象的键名和键值取出来存入新的数组中。最终得到的 result 数组中包含了每个 id 对应的 value 值相加后的结果。
相关问题
vue 两个数组对象去重
可以使用 JavaScript 的 Set 数据结构来实现两个数组对象的去重。具体步骤如下:
1. 将两个数组合并成一个新数组。
2. 使用 Set 对新数组进行去重,生成一个新的 Set 对象。
3. 将新的 Set 对象转换回数组形式,得到去重后的数组。
代码示例:
```javascript
const arr1 = [{id: 1, name: '张三'}, {id: 2, name: '李四'}];
const arr2 = [{id: 2, name: '李四'}, {id: 3, name: '王五'}];
const mergedArr = [...arr1, ...arr2]; // 合并两个数组
const set = new Set(mergedArr.map(item => JSON.stringify(item))); // 使用 Set 去重
const uniqueArr = Array.from(set).map(item => JSON.parse(item)); // 将 Set 转换回数组形式
console.log(uniqueArr); // [{id: 1, name: '张三'}, {id: 2, name: '李四'}, {id: 3, name: '王五'}]
```
这里使用了 `JSON.stringify()` 和 `JSON.parse()` 方法将对象转换为字符串再进行去重操作,因为 Set 无法直接去重对象类型。
vue中数组对象去重
在Vue中对数组对象进行去重有多种方法。一种简单的方法是使用Set集合来去重,但是对于数组对象来说,这种方法并不适用。可以采取以下间接的方法来实现数组对象的去重。
一种方法是使用Map来进行去重。首先创建一个空的Map对象,然后使用filter方法对数组进行筛选,只保留Map中没有出现过的元素,并将新的元素添加到Map中。最后返回筛选后的数组即可。例如:
```
elimination(arr) {
const res = new Map();
return arr.filter((item) => !res.has(item.id) && res.set(item.id, 1));
},
```
在Vue中使用该方法可以这样调用:
```
this.arr = this.elimination(this.arr);
```
另一种方法是直接在Vue的方法中使用filter和Map来进行去重。例如:
```
quChong() {
let arr = [
{ id: 1, name: '111' },
{ id: 1, name: '111' },
{ id: 2, name: '222' },
{ id: 3, name: '333' }
];
let arr1 = this.unique(arr);
console.log(arr1);
},
unique(arr) {
const res = new Map();
return arr.filter((item) => !res.has(item.id) && res.set(item.id, 1));
},
```
以上代码中,通过调用`unique`方法实现了数组对象的去重,并将结果打印输出。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [数组对象去重(vue)](https://blog.csdn.net/m0_58259728/article/details/120197737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [vue数组去重,数组对象去重](https://blog.csdn.net/snowflak/article/details/127653450)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)