gpt4 book ai didi

Javascript 功能逻辑不起作用

转载 作者:行者123 更新时间:2023-11-30 15:06:22 25 4
gpt4 key购买 nike

我正在尝试用

创建一个对象

currency

opening balance

and closing balance

我有以下数据

var _ = require('underscore');

var accounts=[
{
"id":"20",
"name":"OASIS MALL-RMB Account",
"branchId":"6",
"type_id":"1",
"currency_id":"1",
"balance":"0",
"createdBy":"2",
"active":"1",
"ts":"2017-06-30 00:12:08"
},
{
"id":"21",
"name":"OASIS MALL-USD Account",
"branchId":"6",
"type_id":"1",
"currency_id":"2",
"balance":"0",
"createdBy":"2",
"active":"1",
"ts":"2017-06-30 00:12:09"
},
{
"id":"22","name":"OASIS MALL-DIRHAM Account",
"branchId":"6",
"type_id":"1",
"currency_id":"3",
"balance":"0",
"createdBy":"2",
"active":"1",
"ts":"2017-06-30 00:12:09"
},
{
"id":"23",
"name":"OASIS MALL-UGX Account",
"branchId":"6",
"type_id":"1",
"currency_id":"4",
"balance":"0",
"createdBy":"2",
"active":"1",
"ts":"2017-06-30 00:12:09"
},
{
"id":"24",
"name":"OASIS MALL-KSH Account",
"branchId":"6",
"type_id":"1",
"currency_id":"5",
"balance":"0",
"createdBy":"2",
"active":"1",
"ts":"2017-06-30 00:12:09"
}
]

var balances =[
{
"id":"101",
"branchId":"6",
"accountId":"20",
"openingBalance":"3260000",
"closingBalance":"3260000",
"date":"2017-08-15",
"ts":"2017-08-15 02:27:08"
},
{
"id":"102",
"branchId":"6",
"accountId":"21",
"openingBalance":"1882492",
"closingBalance":"1882492",
"date":"2017-08-15",
"ts":"2017-08-15 02:27:08"
},
{
"id":"103","branchId":"6",
"accountId":"22",
"openingBalance":"-3000",
"closingBalance":"-3000",
"date":"2017-08-15",
"ts":"2017-08-15 02:27:08"
},
{
"id":"104",
"branchId":"6",
"accountId":"23",
"openingBalance":"95199318",
"closingBalance":"95199318",
"date":"2017-08-15",
"ts":"2017-08-15 02:27:08"
},
{
"id":"105",
"branchId":"6",
"accountId":"24",
"openingBalance":"1847000",
"closingBalance":"1847000",
"date":"2017-08-15",
"ts":"2017-08-15 02:27:08"
}
]

我知道如何在循环和 if 语句中执行此操作。但我想用功能性的方式来做我试过写这段代码。

var DisplayAccounts = function(accounts,balances){

var displayaccounts = _(accounts).map((x)=>{


var mybalance = _(balances)
.reduce((acc,z)=>{
acc={
currency :x.currency_id,
openingBalance : z.openingBalance,
closingBalance : z.closingBalance
};
return acc;
},{});
return mybalance;

});
return displayaccounts;
}

console.log(DisplayAccounts(accounts,balances));

但它给了我一个我不喜欢的答案。它给了我

[ { currency: '1',
openingBalance: '1847000',
closingBalance: '1847000' },
{ currency: '2',
openingBalance: '1847000',
closingBalance: '1847000' },
{ currency: '3',
openingBalance: '1847000',
closingBalance: '1847000' },
{ currency: '4',
openingBalance: '1847000',
closingBalance: '1847000' },
{ currency: '5',
openingBalance: '1847000',
closingBalance: '1847000' } ]

相同的期初和期末余额。我需要每种货币都有其相应的期初和期末余额,就像这样。

[ { currency: '1',
openingBalance: '3260000',
closingBalance: '3260000' },
{ currency: '2',
openingBalance: '1882492',
closingBalance: '1882492' },
{ currency: '3',
openingBalance: '-3000',
closingBalance: '-3000' },
{ currency: '4',
openingBalance: '95199318',
closingBalance: '95199318' },
{ currency: '5',
openingBalance: '1847000',
closingBalance: '1847000' } ]

它是怎么做到的?

最佳答案

这不是纯函数式方法,但会生成所需的结果:

function displayAccounts(acc, bal) {
return acc.map(x => {
let b = bal.find(b => b.accountId === x.id);
return {
currency: x.currency_id,
openingBalance: b.openingBalance,
closingBalance: b.closingBalance
}
});
}

console.log(displayAccounts(accounts, balances));

关于Javascript 功能逻辑不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45695404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com