function delSameObjValue(arr, resultNum, keyName, keyValue) { const warp = new Map(); arr.forEach(i => { let str = keyName.map(v => i[v]).join('_'); i[resultNum] = keyValue.reduce((p, c) => p += i[c], 0); warp.has(str) ? warp.get(str)[resultNum] += i[resultNum] : warp.set(str, i); }); return Array.from(warp).map(([, v]) => v); } var result=delSameObjValue(json_shijian,'resultNum',['日期'],['时间']) console.log(result)
时间: 2023-03-28 18:02:13 浏览: 67
这是一个关于 JavaScript 的函数的问题,我可以回答。这个函数的作用是去除数组中重复的对象,并根据指定的属性值进行合并。具体实现是通过 Map 数据结构来存储对象,然后根据指定的属性值进行合并。最后返回合并后的数组。
相关问题
async function confirm() { isShow.value = false; // params.value.pageSize = 7 let i = menu.value.find((v) => v.isActive === true).id - 1; if (i === 0) { params.value.houseType = tagsList.value.find( (v) => v.isActive === true )?.value; } else if (i === 1) { params.value.orientation = tagsList.value.find( (v) => v.isActive === true )?.value; } else if (i === 2) { params.value.rentStr = tagsList.value.find( (v) => v.isActive === true )?.value; } else if (i === 3) { let arr = []; tagsList.value?.forEach((v) => { if (v.isActive === true) { arr.push(v.value * 1); } }); if (arr.length > 0) { params.value.houseLabels = arr.join(","); } } search(); }优化
可以将这段代码优化为:
```
isShow.value = false;
// params.value.pageSize = 7
const i = menu.value.findIndex(v => v.isActive) - 1;
if (i === 0) {
params.value.houseType = tagsList.value.find(v => v.isActive)?.value;
} else if (i === 1) {
params.value.orientation = tagsList.value.find(v => v.isActive)?.value;
} else if (i === 2) {
params.value.rentStr = tagsList.value.find(v => v.isActive)?.value;
} else if (i === 3) {
const arr = tagsList.value?.filter(v => v.isActive)?.map(v => v.value * 1);
if (arr?.length) {
params.value.houseLabels = arr.join(",");
}
}
search();
```
这样可以将代码变得更加简洁和易读,同时也可以避免使用可选链操作符时的一些潜在问题。
const arr = [ { name: 'ceshi1', value1: 345, value2: 85934 }, { name: 'ceshi2', value1: 3432, value2: 343432 }, ]; const result = Math.max( ...arr.map(obj => obj.value1), ...arr.map(obj => obj.value2) );找到对象里最大值对应的key
可以使用 `find` 方法来找到最大值对应的对象,然后再返回对应的 key。
```javascript
const arr = [
{ name: 'ceshi1', value1: 345, value2: 85934 },
{ name: 'ceshi2', value1: 3432, value2: 343432 },
];
const maxValue = Math.max(...arr.map(obj => obj.value1), ...arr.map(obj => obj.value2));
const objWithMaxValue = arr.find(obj => obj.value1 === maxValue || obj.value2 === maxValue);
let key;
if (objWithMaxValue) {
if (objWithMaxValue.value1 === maxValue) {
key = 'value1';
} else {
key = 'value2';
}
}
console.log(key); // 输出 'value2'
```
在上面的代码中,首先找到最大值 `maxValue`。然后使用 `find` 方法在数组中找到第一个值为 `maxValue` 的对象 `objWithMaxValue`,最后根据 `objWithMaxValue` 中哪个属性的值等于 `maxValue` 来确定返回的 key。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)