通过对象数组迭代本机

如何解决通过对象数组迭代本机

我的回复

   {
   "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_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
            },"payment_status":111,"rqst":"Create","updtd_dt":{
                     "$date":"2020-10-10T12:02:32.069Z"
                  }
               },"updtd_dt":{
                     "$date":"2020-10-10T12:02:32.319Z"
                  }
               }
            ],"transaction_id":2410786,"tz":"20201010120230","updtd_dt":{
               "$date":"2020-10-10T12:02:32.319Z"
            },"utype":1,"event_description":"Bill Payment"
         },{
            "_id":2410762,"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","country":"50052","title":"50092","icc":"80990","phoneNumber":"9709607195","address":"kormangla","email":"no@no.com","event":1001,"dob":"02-Sep-2002"
            },"pending_at":"Head Of Sales","status":103,"status_track":[],"transaction_id":2410762,"tz":"20200922111540","updtd_dt":{
               "$date":"2020-09-22T11:15:40.875Z"
            },"status_name":"In Progress","status_key":"status_1","event_description":"Prepaid Form"
         }
      ]
   }
}

我需要一个包含event_descriptioncount的数组,即event_description来自transactionsList,而count是基于{{1}在事务列表中。请检查以下我尝试过的代码,但是没有用。你能帮我吗?

event_description

结果数组应包含对象,每个对象都有两个键,一个 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的出现次数,另一个event-description本身。

解决方法

尝试以下代码块

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的情况下对其进行测试。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Static Template</title>
  </head>
  <body>
    <script>
      const response = {
        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_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,payment_status: 111,rqst: "Create",updtd_dt: {
                    $date: "2020-10-10T12:02:32.069Z",updtd_dt: {
                    $date: "2020-10-10T12:02:32.319Z",transaction_id: 2410786,tz: "20201010120230",updtd_dt: {
                $date: "2020-10-10T12:02:32.319Z",utype: 1,event_description: "Bill Payment",{
              _id: 2410762,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",country: "50052",title: "50092",icc: "80990",phoneNumber: "9709607195",address: "kormangla",email: "no@no.com",event: 1001,dob: "02-Sep-2002",pending_at: "Head Of Sales",status: 103,status_track: [],transaction_id: 2410762,tz: "20200922111540",updtd_dt: {
                $date: "2020-09-22T11:15:40.875Z",status_name: "In Progress",status_key: "status_1",event_description: "Prepaid Form",};

      var transactionList = response.payload.transactionList;
      var events = [];
      for (const transaction of transactionList) {
        let existedIndex;
        existedIndex = events.findIndex(
          ({ event }) =>
            event &&
            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"],};
          events.push(newEvent);
        }
      }
      console.log(events);
    </script>
  </body>
</html>

,

您可以像这样使用数组约简

const data= {
   "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_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
            },"payment_status":111,"rqst":"Create","updtd_dt":{
                     "$date":"2020-10-10T12:02:32.069Z"
                  }
               },"updtd_dt":{
                     "$date":"2020-10-10T12:02:32.319Z"
                  }
               }
            ],"transaction_id":2410786,"tz":"20201010120230","updtd_dt":{
               "$date":"2020-10-10T12:02:32.319Z"
            },"utype":1,"event_description":"Bill Payment"
         },{
            "_id":2410762,"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","country":"50052","title":"50092","icc":"80990","phoneNumber":"9709607195","address":"kormangla","email":"no@no.com","event":1001,"dob":"02-Sep-2002"
            },"pending_at":"Head Of Sales","status":103,"status_track":[],"transaction_id":2410762,"tz":"20200922111540","updtd_dt":{
               "$date":"2020-09-22T11:15:40.875Z"
            },"status_name":"In Progress","status_key":"status_1","event_description":"Prepaid Form"
         },"event_description":"Prepaid Form"
         }
      ]
   }
};

const reducer = (acc,cur) => {
  const item = acc.find((x) => x['event_description'] === cur['event_description']);
  if (item) {
    item.count++;
  } else {
    acc.push({
      event_description: cur.event_description,count:1
    });
  }
  return acc;
};

console.log(data.payload.transactionList.reduce(reducer,[]))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?