Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从对象数组中的字符串中查找数值并进行计算_Javascript_Reactjs - Fatal编程技术网

Javascript 从对象数组中的字符串中查找数值并进行计算

Javascript 从对象数组中的字符串中查找数值并进行计算,javascript,reactjs,Javascript,Reactjs,我的JavaScript数组如下所示 [ {id:1, msg:"Your Acct 123XXXX456 Has Been Debited with USD2,100.00 On 05- MAY- 2019 07:26:58 By AB: 123456**7899/USER NAME/0505201. Bal: USD973.28CR"}, <br/> {id:1, msg: "Your Acct 123XXXX456 Has Been Debited with USD1,1

我的JavaScript数组如下所示

[ 
{id:1, msg:"Your Acct 123XXXX456 Has Been Debited with USD2,100.00 On 05- 
MAY- 2019 07:26:58 By AB: 123456**7899/USER NAME/0505201. Bal: 
USD973.28CR"}, <br/>
{id:1, msg: "Your Acct 123XXXX456 Has Been Debited with USD1,100.00 On 
05-MAY-2019 07:26:58 By AB: 123456**7899/USER NAME/0505201. Bal: 
USD673.28CR"},<br/>
{id:2, msg: "Your Acct 345XXXX678 Has Been Debited with USD4,100.00 On 
05-MAY-2019 07:26:58 By AB: 11111**22222/USER NAME/0505201. Bal: 
USD373.28CR"}
]
[123,456,2,1,00,5]
我尝试了以下方法从字符串中获取非数字

let result = myArr[0].replace(/\D+/g, ' ').trim().split(' ').map(e => 
parseInt(e));
但产出是这样的

[ 
{id:1, msg:"Your Acct 123XXXX456 Has Been Debited with USD2,100.00 On 05- 
MAY- 2019 07:26:58 By AB: 123456**7899/USER NAME/0505201. Bal: 
USD973.28CR"}, <br/>
{id:1, msg: "Your Acct 123XXXX456 Has Been Debited with USD1,100.00 On 
05-MAY-2019 07:26:58 By AB: 123456**7899/USER NAME/0505201. Bal: 
USD673.28CR"},<br/>
{id:2, msg: "Your Acct 345XXXX678 Has Been Debited with USD4,100.00 On 
05-MAY-2019 07:26:58 By AB: 11111**22222/USER NAME/0505201. Bal: 
USD373.28CR"}
]
[123,456,2,1,00,5]
这种方法是将逗号放在每个数字的前面,删除前面带有00的小数点。我不知道如何只选择借方金额。 我希望输出如下:

User   Highest Debit    Lowest Debit   Total Debit 
 1       2,100.00         1,100.00       3,200.00 
 2       4,100.00         4,100.00       4,100.00 
myArr=[{
“id”:1,
“msg”:“您的账户123xx456已于2019年5月5日07:26:58由AB:123456**7899/用户名/0505201借记2100.00美元。余额:973.28 CR”
},
{
“id”:1,
“msg”:“您的账户123xx456已于2019年5月5日07:26:58由AB:123456**7899/用户名/0505201借记1100.00美元。余额:673.28 CR”
},
{
“id”:2,
“msg”:“您的账户345xx678已于2019年5月5日07:26:58由AB:11111**2222/用户名/0505201借记4100.00美元。余额:373.28 CR”
}
]
让result=myArr[0]。替换(/\D+/g',).trim().split('').map(e=>
parseInt(e));

console.log(result)
您的正则表达式太简单了

这里有一种方法可以使用Math.min和Math.max获取每个借记

我曾考虑使用reduce,但这更具可读性

myArr=[
{“id”:1,“msg”:“您的账户123xx456已于2019年5月5日07:26:58被AB:123456**7899/用户名/0505201.余额:973.28美元记入借方”,
{“id”:1,“msg”:“您的账户123xx456已于2019年5月5日07:26:58被AB:123456**7899/用户名/0505201.余额:673.28美元记入借方”,
{“id”:2,“msg”:“您的账户345xx678已于2019年5月5日07:26:58被AB:11111**2222/用户名/0505201.余额:373.28美元记入借方”}
]
设res={}
myArr.forEach(对象=>{
const id=对象id;
const msg=obj.msg;
const uPos=msg.indexOf(“USD”);//假设为静态消息
//获取金额,移除千位分隔符后使用+转换为数字
常量num=+msg.substring(uPos+3,msg.indexOf(“,uPos)).replace(/,/g,”)
设cur=res[id];
如果(!cur){res[id]={};cur=res[id];cur.total=0;}
cur.low=cur.low?Math.min(cur.low,num):num;
cur.high=cur.high?Math.max(cur.high,num):num;
cur.total+=num;
})

控制台日志(res)我给你做了一个片段
myArr[0]
是一个对象。您需要使用
myArr[0].msg.replace
谢谢您的帮助。这是否也支持小数点?比如,如果借方金额是2100.50,那么它已经是了。请参阅更新。
+
转换为数字,并在过程中删除.00,但不是.05,例如nice。非常感谢你的时间和帮助。