React native 在对象数组中迭代
我的回答是React native 在对象数组中迭代,react-native,dictionary,for-loop,iteration,React Native,Dictionary,For Loop,Iteration,我的回答是 { "payload":{ "count":158, "transactionList":[ { "_id":2410787, "chnl":"Mobile", "crtd_by":30001, &
{
"payload":{
"count":158,
"transactionList":[
{
"_id":2410787,
"chnl":"Mobile",
"crtd_by":30001,
"crtd_dt":{
"$date":"2020-10-12T11:26:52.243Z"
},
"event_id":"1005",
"event_name":"1005",
"interface":{
"deviceInfo":{
"webOrMobile":"web"
},
"system":"EI-Platform",
"event":1005,
"src_system_name":"SNOC",
"undefined":"9842012345"
},
"locale":"en",
"nodeid":20,
"org_id":20,
"org_type":5,
"pwd":"KpR8Vp8SMRWPncdaBwMLwnsWh2E1JfoPnTE1rozmc3s=",
"rqst":"Request-Type",
"src":"i",
"status":152,
"status_track":[
{
"status":103,
"updtd_dt":{
"$date":"2020-10-12T11:26:52.243Z"
}
},
{
"status":152,
"updtd_dt":{
"$date":"2020-10-12T11:26:52.452Z"
}
}
],
"timezoneOffset":-330,
"transaction_id":2410787,
"tz":"20201012165651",
"uid":30001,
"uname":"EIADMIN",
"updtd_by":30001,
"updtd_dt":{
"$date":"2020-10-12T11:26:52.452Z"
},
"utype":730,
"status_name":"Completed",
"status_key":"status_2",
"event_description":"Bolt On/Top Up"
},
{
"_id":2410786,
"chnl":"Web",
"crtd_by":30001,
"crtd_dt":{
"$date":"2020-10-10T12:02:32.069Z"
},
"event_id":"1004",
"event_name":"1004",
"interface":{
"amount":120,
"customerName":"David Smith",
"event":1004,
"totalAmount":120,
"deviceInfo":{
"webOrMobile":"web"
},
"payment_details":{
"cash_mode":{
"status":111,
"cash":"120"
}
},
"account_no":11241212
},
"locale":"en",
"nodeid":20,
"org_id":20,
"org_type":5,
"payment_status":111,
"pwd":"KpR8Vp8SMRWPncdaBwMLwnsWh2E1JfoPnTE1rozmc3s=",
"rqst":"Create",
"src":"i",
"status":152,
"status_track":[
{
"status":103,
"updtd_dt":{
"$date":"2020-10-10T12:02:32.069Z"
}
},
{
"status":152,
"updtd_dt":{
"$date":"2020-10-10T12:02:32.319Z"
}
}
],
"timezoneOffset":-330,
"transaction_id":2410786,
"tz":"20201010120230",
"uid":30001,
"uname":"EIADMIN",
"updtd_by":30001,
"updtd_dt":{
"$date":"2020-10-10T12:02:32.319Z"
},
"utype":1,
"status_name":"Completed",
"status_key":"status_2",
"event_description":"Bill Payment"
},
{
"_id":2410762,
"chnl":"Web",
"crtd_by":30001,
"crtd_dt":{
"$date":"2020-09-22T11:15:40.631Z"
},
"event_id":"1001",
"event_name":"1001",
"interface":{
"pcardno":"8944110000000100017",
"doc_tran_value":"",
"p_lname":"Sharma",
"product_id":"PAYG01",
"p_fname":"Rakesh",
"msisdn":"7999990099",
"zipcode":"9090",
"state":"50054",
"lastname":"Sharma",
"firstname":"Rakesh",
"deviceInfo":{
"webOrMobile":"web"
},
"country":"50052",
"system":"EI-Platform",
"title":"50092",
"icc":"80990",
"phoneNumber":"9709607195",
"address":"kormangla",
"email":"no@no.com",
"event":1001,
"dob":"02-Sep-2002"
},
"locale":"en",
"nodeid":20,
"org_id":20,
"org_type":5,
"pending_at":"Head Of Sales",
"pwd":"KpR8Vp8SMRWPncdaBwMLwnsWh2E1JfoPnTE1rozmc3s=",
"rqst":"Create",
"src":"i",
"status":103,
"status_track":[],
"timezoneOffset":-330,
"transaction_id":2410762,
"tz":"20200922111540",
"uid":30001,
"uname":"EIADMIN",
"updtd_by":30001,
"updtd_dt":{
"$date":"2020-09-22T11:15:40.875Z"
},
"utype":1,
"status_name":"In Progress",
"status_key":"status_1",
"event_description":"Prepaid Form"
}
]
}
}
我需要一个数组,其中包含事件描述
和计数
,即事件描述
来自交易列表
,计数
是基于交易列表中事件描述
的发生次数。请检查下面的代码,我已经尝试过,但它没有工作。你能帮帮我吗
var transactionList = response.payload.transactionList
var events = []
for (const transaction in transactionList) {
let existedIndex = events.findIndex(({event}) => event['event_description'] == transaction['event_description'])
if (existedIndex && existedIndex >= 0) {
events[existedIndex]['count'] = events[existedIndex]['count'] + 1
} else {
let newEvent = { 'event_description': transaction['event_description'], 'count': 1 }
events.push(newEvent);
}
}
结果数组应该包含对象,每个对象都有两个键,一个是
count
,它是事件描述
的出现次数,另一个是事件描述
本身。尝试下面的代码块
var transactionList = response.payload.transactionList
var events = []
transactionList.forEach((transaction, index)=>{
let existedIndex = events.findIndex((event) => event.event_description === transaction.event_description)
if (existedIndex >= 0) {
events[existedIndex].count = events[existedIndex].count + 1
} else {
let newEvent = { 'event_description': transaction.event_description, 'count': 1 }
events.push(newEvent);
}
})
console.log(events)
当您需要处理对象时,您正在处理索引。 您需要使用
for of
而不是for in
这是更新的代码:
var transactionList = response.payload.transactionList;
var events = [];
for (const transaction of transactionList) {
let existedIndex = events.findIndex(
({ event }) =>
event && // a little test because sometime it returns undifined
event["event_description"] &&
event["event_description"] == transaction["event_description"]
);
if (existedIndex && existedIndex >= 0) {
events[existedIndex]["count"] = events[existedIndex]["count"] + 1;
} else {
let newEvent = {
event_description: transaction["event_description"],
count: 1,
};
events.push(newEvent);
}
}
这里是一个完整的代码片段,我将JSON更改为一个对象,这样您就可以不用RN进行测试
静态模板
常数响应={
有效载荷:{
总数:158,
交易清单:[
{
_识别号码:2410787,
chnl:“手机”,
crtd_by:30001,
crtd_dt:{
$date:“2020-10-12T11:26:52.243Z”,
},
事件编号:“1005”,
事件名称:“1005”,
接口:{
设备信息:{
webOrMobile:“web”,
},
系统:“EI平台”,
活动:1005,
src_系统_名称:“SNOC”,
未定义:“9842012345”,
},
地点:“恩”,
诺德:20,
组织id:20,
组织类型:5,
pwd:“KpR8Vp8SMRWPncdaBwMLwnsWh2E1JfoPnTE1rozmc3s=”,
rqst:“请求类型”,
src:“我”,
现状:152,
状态跟踪:[
{
现状:103,
updtd_dt:{
$date:“2020-10-12T11:26:52.243Z”,
},
},
{
现状:152,
updtd_dt:{
$date:“2020-10-12T11:26:52.452Z”,
},
},
],
时区偏移:-330,
交易编号:2410787,
tz:“20201012165651”,
uid:30001,
uname:“EIADMIN”,
更新日期:30001,
updtd_dt:{
$date:“2020-10-12T11:26:52.452Z”,
},
utype:730,
状态名称:“已完成”,
状态键:“状态2”,
事件描述:“栓接/加满”,
},
{
_识别号码:2410786,
chnl:“网络”,
crtd_by:30001,
crtd_dt:{
$date:“2020-10-10T12:02:32.069Z”,
},
事件编号:“1004”,
事件名称:“1004”,
接口:{
金额:120,
客户名称:“大卫·史密斯”,
活动:1004,
总数:120,
设备信息:{
webOrMobile:“web”,
},
付款详情:{
现金支付模式:{
现状:111,
现金:“120”,
},
},
账号:11241212,
},
地点:“恩”,
诺德:20,
组织id:20,
组织类型:5,
付款状态:111,
pwd:“KpR8Vp8SMRWPncdaBwMLwnsWh2E1JfoPnTE1rozmc3s=”,
rqst:“创建”,
src:“我”,
现状:152,
状态跟踪:[
{
现状:103,
updtd_dt:{
$date:“2020-10-10T12:02:32.069Z”,
},
},
{
现状:152,
updtd_dt:{
$date:“2020-10-10T12:02:32.319Z”,
},
},
],
时区偏移:-330,
交易编号:2410786,
tz:“20201010120230”,
uid:30001,
uname:“EIADMIN”,
更新日期:30001,
updtd_dt:{
$date:“2020-10-10T12:02:32.319Z”,
},
类型:1,
状态名称:“已完成”,
状态键:“状态2”,
事件描述:“账单支付”,
},
{
_身份证号码:2410762,
chnl:“网络”,
crtd_by:30001,
crtd_dt:{
$date:“2020-09-22T11:15:40.631Z”,
},
事件编号:“1001”,
事件名称:“1001”,
接口:{
pcardno:“894411000000010017”,
文件传输值:“”,
p_lname:“沙玛”,
产品标识:“PAYG01”,
p_fname:“Rakesh”,
msisdn:“799999099”,
zipcode:“9090”,
国家:“50054”,
姓:“沙玛”,
名字:“拉凯什”,
设备信息:{
webOrMobile:“web”,
},
国家:“50052”,
系统:“EI平台”,
标题:“50092”,
国际商会:“80990”,
电话号码:“9709607195”,
地址:“kormangla”,
电子邮件:“no@no.com",
活动:1001,
dob:“2002年9月2日”,
},
地点:“恩”,
诺德:20,
组织id:20,
组织类型:5,
待决职位:“销售负责人”,
pwd:“KpR8Vp8SMRWPncdaBwMLwnsWh2E1JfoPnTE1rozmc3s=”,
rqst:“创建