如何从对象数组数组中检索值 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的主要内容,如果未能解决你的问题,请参考以下文章
如何在对象数组中显示特定对象(Angular 5,TypeScript)