【问题标题】:Get the latest timeStamp from the json response从 json 响应中获取最新的时间戳
【发布时间】:2023-03-19 11:38:01
【问题描述】:

我想从actualDataArray.status =="Approved"的json响应中获取最新的时间戳和用户ID,用于在模板上填充它

{
  "dataArray": [
    {
      "Id": 11,
      "Name": "HJ Enterprises",
      "Code": "HJC",
      "description": "HJ APProved",
      "Status": "OK",
      "actualDataArray": [
        {
          "timeStamp": "2019-05-07-06.26.23.991068",
          "status": "Approved",
          "userID": "@23444",
          "articles": ""
        },
        {
          "timeStamp": "2019-05-07-06.37.27.978668",
          "status": "Rejected",
          "userID": "@1234",
          "articles": "articles"
        },
        {
          "timeStamp": "2019-05-08-06.26.28.991068",
          "status": "Approved",
          "userID": "@1233e",
          "articles": ""
        },
      ],


    },

预期输出应该是与该时间戳对应的最新时间戳和用户 ID。 请帮我解决这个问题。

【问题讨论】:

  • 请将您的尝试添加到问题中。
  • @adiga 我正在尝试使用过滤方法但无法做到

标签: javascript arrays json angular typescript


【解决方案1】:

有了这个,你可以得到最新的具有批准状态的对象。

const data = {
  "dataArray": [
    {
      "Id": 11,
      "Name": "HJ Enterprises",
      "Code": "HJC",
      "description": "HJ APProved",
      "Status": "OK",
      "actualDataArray": [
        {
          "timeStamp": "2019-05-07-06.26.23.991068",
          "status": "Approved",
          "userID": "@23444",
          "articles": ""
        },
        {
          "timeStamp": "2019-05-07-06.37.27.978668",
          "status": "Rejected",
          "userID": "@1234",
          "articles": "articles"
        },
        {
          "timeStamp": "2019-05-08-06.26.28.991068",
          "status": "Approved",
          "userID": "@1233e",
          "articles": ""
        },
      ],


    }
  ]
}

let dataArr = data.dataArray
dataArr.forEach((dataPoint, i) => {
  let actualDataArray = dataPoint.actualDataArray
  let sortedActualDataArray = actualDataArray.sort((a, b) => {
    (new Date(a.timeStamp) > new Date(b.timeStamp)) ? 1 : -1
  })
  
  let timeStampElem = undefined
  
  if(dataPoint.status != "Ok"){
    timeStampElem = tempSearchArr[0]
  }
  else {
    timeStampElem = tempSearchArr[1]
  }
  console.log(timeStampElem)
  console.log(`TimeStamp: ${timeStampElem.timeStamp}`)
  console.log(`UserID: ${timeStampElem.userID}`)
})

【讨论】:

  • 工作得非常好..您能否将功能添加到代码中,以便如果状态 != Ok 在这种情况下它应该采用第二个最新的时间戳
  • 更新了@sm770。另外,我添加了数组支持,以便它贯穿 dataArray 中的每个元素。
  • aleady 代码在 map 函数中运行。所以在这种情况下不需要循环?
  • 哪里有地图功能? @sm770
  • this.dataApprovalList1 = this.dataApprovalList.map(data => { let value = data.actualBelowTheLineTradeAuditArray .sort((a, b) => (new Date(a.reviseTimestamp) > new Date( b.reviseTimestamp)) ? 1 : -1).find((el) => el.reviseManualTradeStatus != "Traded"); return { "reviseTimestamp": value.reviseTimestamp ? value.reviseTimestamp:null, "reviseUserId": value .reviseUserId ?value.reviseUserId:null , "reviseManualTradeStatus": data.reviseManualTradeStatus ? value.reviseManualTradeStatus:null,
【解决方案2】:

试试这个代码:

var jsonObj = {
    "dataArray": [
        {
            "Id": 11,
            "Name": "HJ Enterprises",
            "Code": "HJC",
            "description": "HJ APProved",
            "Status": "OK",
            "actualDataArray": [
                {
                    "timeStamp": "2019-05-07-06.26.23.991068",
                    "status": "Approved",
                    "userID": "@23444",
                    "articles": ""
                },
                {
                    "timeStamp": "2019-05-07-06.37.27.978668",
                    "status": "Rejected",
                    "userID": "@1234",
                    "articles": "articles"
                },
                {
                    "timeStamp": "2019-05-08-06.26.28.991068",
                    "status": "Approved",
                    "userID": "@1233e",
                    "articles": ""
                },
            ],
        }
    ]
};
var approvedUsers = {};
var totalData = jsonObj.dataArray.length;
var i = 0;
while(i < totalData) {
    var actualsData = jsonObj.dataArray[i].actualDataArray;
    var actualLength = actualsData.length;
    var j = 0;
    while(j < actualLength) {
        if (actualsData[j].status === "Approved") {
            approvedUsers[actualsData[j].userID] = actualsData[j];
        }
        j += 1;
    }    
    i += 1;
}
console.log(approvedUsers);

在此,我在单独的var 中聚合具有“已批准”状态的数据,最后在console.log() 中显示它。您可以根据需要使用此var

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    相关资源
    最近更新 更多