Computer >> Máy Tính >  >> Lập trình >> Javascript

Tính tổng từ các giá trị mảng có khóa tương tự trong JavaScript

Giả sử, đây là một mảng chứa một số dữ liệu về cổ phiếu được bán và mua bởi một số công ty trong một khoảng thời gian.

 const transaction =[['AAPL', 'buy', 100], ['WMT', 'sell', 75], ['MCD', 'buy', 125], ['GOOG', 'sell ', 10], [' AAPL ',' mua ', 100], [' AAPL ',' bán ', 100], [' AAPL ',' bán ', 20], [' DIS ',' mua ', 15], ['MCD', 'mua', 10], ['WMT', 'mua', 50], ['MCD', 'bán', 90]]; 

Chúng tôi muốn viết một hàm nhận dữ liệu này và trả về một đối tượng của mảng có tên khóa chính (như 'AAPL', 'MCD') và giá trị dưới dạng mảng hai số, trong đó phần tử đầu tiên đại diện cho tổng số mua và phần tử thứ hai đại diện tổng số tiền bán được. Do đó, mã giả mạo điều này sẽ là -

Ví dụ

 const transaction =[['AAPL', 'buy', 100], ['WMT', 'sell', 75], ['MCD', 'buy', 125], ['GOOG', 'sell ', 10], [' AAPL ',' mua ', 100], [' AAPL ',' bán ', 100], [' AAPL ',' bán ', 20], [' DIS ',' mua ', 15], ['MCD', 'buy', 10], ['WMT', 'buy', 50], ['MCD', 'sell', 90]]; const tiêu hóaTransactions =(arr) => {return arr.reduce ((acc, val, ind) => {const [stock, type, amount] =val; if (acc [stock]) {const [buy, sell] =acc [stock]; if (type ==='buy') {acc [stock] =[mua + số lượng, bán];} else {acc [stock] =[mua, bán + số lượng];}} else {if (type ==='buy') { acc [stock] =[amount, 0];} else {acc [stock] =[0, amount];}} return acc;}, {});}; console.log (digTransactions (giao dịch));  

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

 {AAPL:[200, 120], WMT:[50, 75], MCD:[135, 90], GOOG:[0, 10], DIS:[15, 0]}