如何在Javascript中迭代嵌套对象?

3
{
"ret": [],
"retUnderAgt": [],
"sum": {
  "services": [
    {
      "serviceCode": "BET",
      "serviceName": "Bet Games Lottery ",
      "txnTypes": [
        {
          "txnTypeName": "Sale",
          "amount": "0",
          "txnTypeCode": "SALE",
          "amt": "0.0"
        },
        {
          "txnTypeName": "Winning",
          "amount": "0",
          "txnTypeCode": "WIN_CLAIM",
          "amt": "0.0"
        }
      ]
    }]
}

我试图像这样循环求和 ----------->>>

for(let i in activityDetailedReportData.sum){
  this.finalTotal.push("Total");
  
  for(let j of i.services){
    for(let k of j.txnTypes){
      this.finalTotal.push(k.amount)
    }
  } 
}

我正在尝试将所有txnTypes中的金额添加到一个名为finalTotal的数组中。

我不知道如何在services内循环遍历txnTypes。请告诉我应该如何做?

我已根据需要编辑了问题,请帮助我解决此问题。


2
请在文本中添加对象(一个小子集)。 - Nina Scholz
1
还请说明您目前获取的结果以及您期望得到的结果。 - Ben
不确定你想做什么,但是如果我理解你的问题正确,尝试在一个数组中推入所有金额,请尝试以下代码:for(let service in activityDetailedReportData.sum){ service.forEach(txnTypes => { txnTypes.forEach(elem => { this.finalTotal.push(elem.amount) }) }) } - Bhuwan Pandey
1
@T.J.Crowder,这里至少需要一个JSON而不是屏幕截图会更有帮助。同时我可以理解,已经纠正了代码: const services = activityDetailedReportData.sum.services; services.forEach(service => { service.txnTypes.forEach(elem => { this.finalTotal.push(elem.amount) }) }) - Bhuwan Pandey
1
@T.J.Crowder 请检查更新后的代码。 - Nehal Jaisalmeria
显示剩余6条评论
1个回答

1

在您的代码中不需要外部循环,因为您只想使用单个activityDetailedReportData.sum.services属性:

this.finalTotal.push("Total");
for (let j of activityDetailedReportData.sum.services) {
    for (let k of j.txnTypes) {
         this.finalTotal.push(k.amount);
    }
} 

使用finalTotal而不是this.finalTotal的实时示例:

const activityDetailedReportData = {
    "ret": [],
    "retUnderAgt": [],
    "sum": {
      "services": [
        {
          "serviceCode": "BET",
          "serviceName": "Bet Games Lottery ",
          "txnTypes": [
            {
              "txnTypeName": "Sale",
              "amount": "0",
              "txnTypeCode": "SALE",
              "amt": "0.0"
            },
            {
              "txnTypeName": "Winning",
              "amount": "0",
              "txnTypeCode": "WIN_CLAIM",
              "amt": "0.0"
            }
          ]
        }]
    }
};

const finalTotal =[];

finalTotal.push("Total");
  
for (let j of activityDetailedReportData.sum.services) {
    for (let k of j.txnTypes) {
         finalTotal.push(k.amount);
    }
} 

console.log(finalTotal);


顺便说一下,这可能会受益于解构:

this.finalTotal.push("Total");
for (let {txnTypes} of activityDetailedReportData.sum.services) {
    for (let {amount} of txnTypes) {
         this.finalTotal.push(amount);
    }
} 

实时示例:

const activityDetailedReportData = {
    "ret": [],
    "retUnderAgt": [],
    "sum": {
      "services": [
        {
          "serviceCode": "BET",
          "serviceName": "Bet Games Lottery ",
          "txnTypes": [
            {
              "txnTypeName": "Sale",
              "amount": "0",
              "txnTypeCode": "SALE",
              "amt": "0.0"
            },
            {
              "txnTypeName": "Winning",
              "amount": "0",
              "txnTypeCode": "WIN_CLAIM",
              "amt": "0.0"
            }
          ]
        }]
    }
};

const finalTotal =[];

finalTotal.push("Total");
for (let {txnTypes} of activityDetailedReportData.sum.services) {
    for (let {amount} of txnTypes) {
         finalTotal.push(amount);
    }
} 

console.log(finalTotal);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接