es6 对象数组求和
时间: 2024-01-19 07:16:04 浏览: 117
可以使用reduce()方法对对象数组进行求和,具体实现如下所示:
```javascript
let arr = [{x: 1}, {x: 2}, {x: 3}];
let sum = arr.reduce((prev, cur) => prev + cur.x, 0);
console.log(sum); // 输出:6
```
上述代码中,首先定义了一个对象数组arr,然后使用reduce()方法对其进行求和。reduce()方法接收两个参数,第一个参数是一个回调函数,用于对数组中的每个元素进行处理;第二个参数是初始值,用于指定reduce()方法开始计算的值。在上述代码中,回调函数中的prev表示上一次计算的结果,cur表示当前正在处理的元素,prev + cur.x表示将上一次计算的结果加上当前元素的x属性值,最终得到求和的结果。
相关问题
es6统计数组对象中的相同属性字段并对值求和
可以使用reduce方法来实现这个功能。假设有一个包含多个对象的数组,每个对象都有一个相同的属性字段,可以按照以下步骤来实现统计相同属性字段的值的和:
1. 使用reduce方法遍历数组,将每个对象的属性值作为key,属性值作为value存储在一个新的对象中。
2. 在reduce方法的回调函数中,如果当前key已经存在于新对象中,则将其对应的value值加上当前对象的属性值,否则将当前key和属性值作为新的键值对添加到新对象中。
3. 最后返回新对象,其中每个属性字段的值都是原数组中对应字段值的总和。
下面是一个示例代码:
```javascript
const arr = [
{ name: 'apple', num: 2 },
{ name: 'banana', num: 3 },
{ name: 'apple', num: 4 },
{ name: 'orange', num: 1 },
{ name: 'banana', num: 5 }
];
const result = arr.reduce((acc, cur) => {
const key = cur.name;
if (acc[key]) {
acc[key] += cur.num;
} else {
acc[key] = cur.num;
}
return acc;
}, {});
console.log(result); // { apple: 6, banana: 8, orange: 1 }
```
在上面的代码中,我们使用reduce方法遍历数组`arr`,并将每个对象的`name`属性作为key,属性值`num`作为value存储在新对象`acc`中。如果当前key已经存在于新对象中,则将其对应的value值加上当前对象的属性值,否则将当前key和属性值作为新的键值对添加到新对象中。最后返回新对象`acc`,其中每个属性字段的值都是原数组中对应字段值的总和。
运行上面的代码,将输出一个新对象,其中每个属性字段的值都是原数组中对应字段值的总和。
es6统计数组对象中的相同属性并对该值求和,返回新数组
可以使用reduce()方法实现统计数组对象中相同属性的值并求和的功能,具体步骤如下:
1. 使用reduce()方法将数组中的每个元素进行遍历,返回一个新的对象;
2. 如果该属性已经存在于新的对象中,则将该属性的值加上当前元素的值,否则将该属性添加到新的对象中;
3. 返回包含新对象的数组。
下面是示例代码:
```javascript
const arr = [
{ name: 'apple', value: 2 },
{ name: 'banana', value: 3 },
{ name: 'apple', value: 4 },
{ name: 'banana', value: 5 }
];
const result = Object.values(arr.reduce((acc, cur) => {
const key = cur.name;
if (acc[key]) {
acc[key].value += cur.value;
} else {
acc[key] = { name: key, value: cur.value };
}
return acc;
}, {}));
console.log(result);
// Output: [{ name: 'apple', value: 6 }, { name: 'banana', value: 8 }]
```
在上面的代码中,我们首先定义了一个数组arr,其中包含了四个对象,每个对象都有一个name和value属性。接着我们使用reduce()方法遍历数组,将每个对象的name属性作为新对象的key,如果新对象中已经有了该key,则将value属性加上当前元素的value属性,否则将该属性添加到新对象中。最后我们使用Object.values()方法将包含新对象的对象转换为数组并返回。
阅读全文