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:“创建