【问题标题】:How to retrieve value from array of array of object angular 5如何从对象数组数组中检索值 angular 5
【发布时间】:2018-11-25 20:54:45
【问题描述】:

我有这样的 JSON,它存储在变量中。

data=[  
   [  
      {  
         "fdate":"01-01-2018",
         "pdate":"31-12-2018",
         "range":"01-01-2018 - 31-12-2018",
         "nlist":[  ],
         "nplist":[  ]
      }
   ],
   [  
      {  
         "fdate":"01-01-2018",
         "pdate":"31-12-2018",
         "range":"01-01-2018 - 31-12-2018",
         "nlist":[  ],
         "nplist":[  ]
      },
      {  
         "efdate":"21-01-2018",
         "expdate":"31-12-2018",
         "range":"21-01-2018 - 31-12-2018",
         "nlist":[  ],
         "nplist":[  ]
      }
   ]
]

如何从打字稿文件中获取范围,请指教。

我正在尝试这样检索,但它不起作用

for(let i=0; i< this.data.length; i++){
            this.other +=  this.data[i].range;
            }
Console.log(this.other);

如果有更好的方法,请建议或告诉我

【问题讨论】:

  • 您的数据有点狂野,但要获得第一个范围,您可以使用data[0][0].range
  • 你在哪里需要这个值?可以加点代码吗?
  • 到目前为止你尝试过什么?请发布预期输出
  • 我已经更新了问题,也添加了ts代码,请指导或任何更好的方法。
  • 即使console.log 拼写错误。我很确定这是一个异步问题;贴出你正在使用的代码,否则没人能帮你

标签: javascript angular typescript angular5


【解决方案1】:

你可以这样做:

for(let i=0; i < this.data.length;i++){
    for(let j=0; j < this.data[i].length;j++){
        this.other +=  this.data[i][j].range;
        console.log(this.data[i][j].range); // What you want to do here...
    }   
}

这是工作示例:https://stackblitz.com/edit/angular-8j5hkk

希望对你有帮助!!!!

【讨论】:

  • 感谢您的回复,但它显示未定义,请您给我看一下工作示例,任何帮助都会很明显。
【解决方案2】:

this.data=[
  [
     {
        "fdate":"01-01-2018",
        "pdate":"31-12-2018",
        "range":"01-01-2018 - 31-12-2018",
        "nlist":[  ],
        "nplist":[  ]
     }
  ],
  [
     {
        "fdate":"01-01-2018",
        "pdate":"31-12-2018",
        "range":"01-01-2018 - 31-12-2018",
        "nlist":[  ],
        "nplist":[  ]
     },
     {
        "efdate":"21-01-2018",
        "expdate":"31-12-2018",
        "range":"21-01-2018 - 31-12-2018",
        "nlist":[  ],
        "nplist":[  ]
     }
  ]
]
for(let i=0; i< this.data.length; i++){
for(let t = 0; t < this.data[i].length; t++) {
     console.log(this.data[i][t].range);
      }
    }
  

在html页面中你可以这样检索

 <div *ngFor="let i of data">
    <p *ngFor="let t of i">{{t.range}}</p>
</div>

或者在你的 ts 中你可以这样做

 for(let i=0; i< this.data.length; i++){
     for(let t = 0; t < this.data[i].length; t++) {
          console.log(this.data[i][t].range);
           }}

【讨论】:

  • 感谢您的回复,html它的显示,但在打字稿它显示未定义,我需要在ts文件中做更多的东西,请指教
【解决方案3】:

var data=[  
   [  
      {  
         "fdate":"01-01-2018",
         "pdate":"31-12-2018",
         "range":"01-01-2018 - 31-12-2018",
         "nlist":[  ],
         "nplist":[  ]
      }
   ],
   [  
      {  
         "fdate":"01-01-2018",
         "pdate":"31-12-2018",
         "range":"01-01-2018 - 31-12-2018",
         "nlist":[  ],
         "nplist":[  ]
      },
      {  
         "efdate":"21-01-2018",
         "expdate":"31-12-2018",
         "range":"21-01-2018 - 31-12-2018",
         "nlist":[  ],
         "nplist":[  ]
      }
   ]
]

var calc = calculateRange(data);
console.log(calc)
function calculateRange(_data){
   var r = "";
   for(var i=0;i<_data.length;i++){
       var isArray = Array.isArray(_data[i]);
       if(isArray){
        r+=calculateRange(_data[i]);
       }else{
        var x = _data[i].range;
        r+= typeof x != "undefined"? x:"";
       }
   }
   return r;
}

您可以使用逻辑循环,示例如上。

【讨论】:

  • 感谢您的响应,它在无限循环中运行并显示 false.. false..in 控制台,请指教。
  • 能否给出_data[i]的踪迹
  • 它在 app.component.ts 中显示 (99586)false:第 357 行
  • 这是一个疯狂的猜测,可能是因为每个元素都以字符串或对象的形式出现。你能用 var rData = JSON.parse(data); 试试同样的方法吗?和 var calc = calculateRange(rData);
  • 感谢您的回复,它现在工作正常,请您指导我,如何在另一个下拉列表中显示 calc,
猜你喜欢
  • 2018-10-30
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多