let a = ['202302', '202303', '202304', '202305', '202306', '202307'] let b = [{name: '202306', value: 2},{name: '202306', value: 1}, {name: '202306', value: 1},{name: '202306', value: 1}] 怎么得到a中的值对应b中相同name的value值的和,并且a中的值与b中的name不相同时为0
时间: 2023-12-23 22:06:24 浏览: 10
要计算数组 `a` 中的值对应数组 `b` 中相同 `name` 的 `value` 值的和,并且当 `a` 中的值与 `b` 中的 `name` 不相同时为 0,你可以使用 JavaScript 中的数组方法 `reduce()`、`filter()` 和 `find()` 来实现。
以下是示例代码:
```javascript
let a = ['202302', '202303', '202304', '202305', '202306', '202307'];
let b = [{name: '202306', value: 2},{name: '202306', value: 1}, {name: '202306', value: 1},{name: '202306', value: 1}];
let result = a.reduce((sum, item) => {
let filteredArray = b.filter((obj) => obj.name === item);
let sumOfValues = filteredArray.reduce((acc, obj) => acc + obj.value, 0);
if (sumOfValues === 0) {
return sum + 0;
} else {
return sum + sumOfValues;
}
}, 0);
console.log(result);
```
运行以上代码,你将得到数组 `a` 中的值对应数组 `b` 中相同 `name` 的 `value` 值的和,并且当 `a` 中的值与 `b` 中的 `name` 不相同时为 0。在示例代码中,我们在第一个 `reduce()` 函数中添加了一个条件判断,如果 `sumOfValues` 的值为 0,则将返回的和加上 0,否则加上 `sumOfValues`。
例如,以上示例代码的输出结果将是:
```
5
```
希望能满足你的需求!如果还有其他问题,请随时提问。