javascript - 将同一数组上的两个元素相乘后减去数组的一个元素
问题描述
我从 api 获取信息,然后将响应中的两个元素相乘,然后对结果求和。到目前为止,这是我的代码:
function forTest(){
$http.get('/api/DaApi?di=' + '2018-11-01' + '&df=' + '2018-11-01')
.then(function(data){
$scope.result = data.data.Response;
$scope.multiplyResult = $scope.result.map(x => x.Cost * x.Quantity).reduce((a, b) => a + b, 0);
}
一切都很完美,但现在我必须在总和之前进行另一次操作。假设现在我有 3 个元素Cost, Quantity and Discount
:
[{Quantity: 2, Cost: 1000, Discount: -100},
{Quantity: 3, Cost: 2000, Discount: -500},
{Quantity: 2, Costo: 3130, Discount: -120}]
现在我需要将每个成本的数量相乘,然后减去折扣(这已经是一个负数)。在乘法和减法之后,我必须对所有结果求和。我怎样才能做减法?在里面map
我必须做减法?就像是:
$scope.multiplyResult = $scope.result.map(x => (x.Cost * x.Quantity) + x.Discount)).reduce((a, b) => a + b, 0);
还是必须在reduce里面?
有人可以帮助我,我对map和reduce的使用有点了解。我正在使用 javascript 和 AngularJs。
提前谢谢。
解决方案
我认为这是一个错字。
let arr = [{Quantity: 2, Cost: 1000, Discount: -100},
{Quantity: 3, Cost: 2000, Discount: -500},
{Quantity: 2, Cost: 3130, Discount: -120}];
let sum = arr.map(x => (x.Cost * x.Quantity) + x.Discount).reduce((a,b)=>a+b,0)
console.log(sum);
推荐阅读
- php - Yii2 视图未渲染。返回主视图
- javascript - 响应式菜单 (mmenu) 导致高 CLS
- c# - 为什么 fastJSON 反序列化在单元测试中完成,但一个属性及其属性在活动时未填充?
- unity3d - 用户可以在 Agora Unity SDK 中同时加入多个视频频道吗?
- ios - Xamarin iOS Shell FlyoutMenu 无法正确呈现
- javascript - 获取当前年份以及从 1901 年到当前年份的年份列表
- reactjs - 我如何知道哪个 React 事件的参数具有哪个 TypeScript 类型?
- maven - 是否可以告诉dependabot根本不连接到中央maven
- kubernetes - 以特权模式运行的 Openshift 容器
- web-scraping - 使用 sed 或更好的方法从网页上刮掉 5 个字符?