如何从对象数组数组中检索值 angular 5

Posted

技术标签:

【中文标题】如何从对象数组数组中检索值 angular 5【英文标题】:How to retrieve value from array of array of object 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 拼写错误。我很确定这是一个异步问题;贴出你正在使用的代码,否则没人能帮你 【参考方案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,

以上是关于如何从对象数组数组中检索值 angular 5的主要内容,如果未能解决你的问题,请参考以下文章

c# - 从对象数组中检索一个值

如何在对象数组中显示特定对象(Angular 5,TypeScript)

使用Angular2中的接口将对象推送到新数组中

从对象数组中打印 One 对象属性并在 angular5 中执行上一个和下一个

根据JavaScript中的属性值从对象数组中选择[重复]

如何使用角度 7 从对象数组中返回 userPass 的值?