Javascript 在React componentDidUpdate中添加和组合数据
我有一个功能组件,它以以下格式编译对象中的数据(this.state.scanlist):Javascript 在React componentDidUpdate中添加和组合数据,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我有一个功能组件,它以以下格式编译对象中的数据(this.state.scanlist): 0: brand: "AATEST" exp: "2022-08-25" gtin: "15735423000247" iname: "Arthur's Test Item" lot: "EEEFFF" qty: 5 ref: "TESTREFE" 1: brand: "AA
0:
brand: "AATEST"
exp: "2022-08-25"
gtin: "15735423000247"
iname: "Arthur's Test Item"
lot: "EEEFFF"
qty: 5
ref: "TESTREFE"
1:
brand: "AATEST"
exp: "2022-08-25"
gtin: "15735423000247"
iname: "Arthur's Test Item"
lot: "CCCDDD"
qty: 3
ref: "TESTREFE"
2:
brand: "AATEST"
exp: "2022-08-25"
gtin: "15735423000247"
iname: "Arthur's Test Item"
lot: "CCCDDD"
qty: 2
ref: "OTHERTESTREF"
我希望在每次组件更新时都有一个具有以下预期输出的新对象:
0:
ref: "TESTREFE"
qty: 8
1:
ref: "OTHERTESTREF"
qty: 2
此外,如果有一个更实际的方式来做这件事在反应,我会喜欢听到它 您可以使用
Array.reduce
,它与react
无关:
const obj=[{
品牌:“AATEST”,
实验:“2022-08-25”,
gtin:“1573542300247”,
iname:“亚瑟的测试项目”,
地段:“EEEFFF”,
数量:5,
参考:“TESTREFE”
},
{
品牌:“AATEST”,
实验:“2022-08-25”,
gtin:“1573542300247”,
iname:“亚瑟的测试项目”,
地段:“CCCDDD”,
数量:3,
参考:“TESTREFE”
},
{
品牌:“AATEST”,
实验:“2022-08-25”,
gtin:“1573542300247”,
iname:“亚瑟的测试项目”,
地段:“CCCDDD”,
数量:2,
参考:“其他测试参考”
}
]
常量结果=对象减少((acc,curr)=>{
//检查累加器中是否存在具有当前参考值的对象
常数ndx=acc.findIndex(e=>e.ref==curr.ref)
如果(ndx>-1){
//如果存在,则增加数量
acc[ndx]。数量+=1
}否则{
//如果不存在,则将新对象推送到累加器
加速推({
参考号:curr.ref,
数量:当前数量
})
}
返回acc;
}, []);
console.log(结果)
我相信这可能是正确的!我有类似的东西,但我仍然有不一致的结果(计数)。这可能是我使用状态导致的。谢谢你的意见。很有趣。当我在以下数据上运行时,我得到数量:5。它似乎对第一个列表进行计数,而不是对每个附加列表仅计数一个:[{“brand”:“AATEST”,“ref”:“TESTREFE”,“iname”:“Arthur的测试项目”,“gtin”:“1573542300247”,“exp”:“2022-08-25”,“lot”:“aaabb”,“qty”:3},{“brand”:“AATEST”,“ref”:“TESTREFE”,“iname”:“Arthur的测试项目”,“gtin”:“157342300027”,“exp”:“2022-08-25”,“lot”:“CCCDDD”,“qty”:3},{“品牌”:“AATEST”,“ref”:“TESTREFE”,“iname”:“Arthur's Test Item”,“gtin”:“1573542300247”,“exp”:“2022-08-25”,“批次”:“EEEFFF”,“数量”:3}]