[英]How to count json data item ionic2
我发现了一个新问题,我想算一下@NAME
来设置数组@NAME
FACET[]
以显示@KEY
Myjson
" RESULT":{
"FACET":[
{ "@NAME" : "creator",
"@COUNT" : "20",
"FACET_VALUES":[
{
"@KEY":"Book Company1",
"@VALUE":"13"},
{
"@KEY":"Book Company1์",
"@VALUE":"10"}],
{ "@NAME" : "lang",
"@COUNT" : "70",
"FACET_VALUES":[
{
"@KEY":"tha",
"@VALUE":"33"},
{
"@KEY":"eng",
"@VALUE":"42"}
],
{ "@NAME" : "bnb",
"@COUNT" : "64",
"FACET_VALUES":[
{
.
.
.
]
.
optionsFn(): void {
this.http.get("my_url")
.subscribe(data =>{
this.date=data.json().RESULT.FACET; //get @NAME
},error=>{
err => console.error(err),
() => console.log('getRepos completed')
);
console.log(this.date);
console.log(this.date);
this.goToapply()
}
goToapply(){
this.http.get("my_url")
.subscribe(data =>{
this.foundRepos=data.json().RESULT.FACET[0,1,2,3.4......].FACET_VALUES; ///get @KEY
},error=>{
console.log(error);
} );
}
..
<ion-label>Filterr</ion-label>
<ion-select [(ngModel)]="refine" (ionChange)="optionsFn();">
<ion-option value="..." *ngFor="let item of date">{{item["@NAME"]}},({{item["@COUNT"]}})</ion-option>
</ion-select>
<ion-list>
<ion-item *ngFor="let item of foundRepos" (click)="itemClicked($event,item)">
<h3> {{ item[@KEY"] }}</h3>
</ion-item>
</ion-list>
这个value="..."
我想把它保留为string
以供使用,但zi知道这个想法。
示例:count
@NAME = 3 (creator,lang,bnb)
,并获得value="..." = 0,1,2 (0==creator ,1==lang ,2==bnb)
当我选择lang
我得到1
,我用它来FACET[1].FACET_VALUES
,所以我得到@KEY
抱歉写错了。 我的英语不是很好。
好的。 我只想向您指出一个提示。 你应该会用词好一点。 不是特别是英语,而是更多关于解释您当前的结果和您想要的结果。 我相信这会迫使你以比目前更快的速度学习英语。 (来自非母语人士)
“我想计数@NAME 来设置数组 FACET[] 以显示 @KEY”
因此,使用返回的 JSON,我们可以做一些事情,但从立即查看您的问题时并不能很清楚(做了一个 +1,因为我不认为它的质量很差或不是一个好问题)。
所以我应该在我的帖子中介绍 3 件事
好的
计算NAME出现的数量
所以你基本上已经得到了这个答案。 您提交了此代码
this.http.get("my_url") .subscribe(data =>{ this.date=data.json().RESULT.FACET; //get @NAME });
这意味着您已经可以访问 FACET 数组。 计数该NAME发生可以或者通过for循环创建和检查,如果名称没有未定义的(因而递增一个int)上NAME总是被定义的事实或计数,从而只调用完成的量this.date.size()
(当然,如果 this.date 设置正确)
获取 FACET 的数组
这个,你已经通过分配this.date = data.json().RESULT.FACET
。 您的this.date
现在包含一个保存 FACET 对象的数组。 就像这样看:JSON(带有在 JSON 中不可能的注释,但仅用于演示目的)=
{ FACET: // declare the main object, called FACET
[ // declaring the FACET as an Array ([] is for creating a list)
{id: 2} //initializing a child of the FACET array
,{id: 3} //initializing the second FACET child.
]
}
所以,这个伪(不现实的)JSON 包含 2 个对象, id = 2
和id = 3
好的,现在你应该对 JSON 有点了解了,让我们来看看你的代码是什么样子的(考虑到一个有多个办公室和每个办公室多个员工的 Businnes)
{
OFFICES" : [
{
"id" : "1",
"location" : "New York",
"employees" : [
{"id" : "1", "fullName" : "Jon Skeet"},
{"id" : "2", "fullName" : "Random Stranger"}
]
},
{
"id" : "2",
"location" : "Amsterdam",
"employees" : [
{"id" : "1", "fullName" : "Ivaro18"},
{"id" : "2", "fullName" : "Some-Random Stranger"}
]
}
]
}
此代码与您的代码基本相同。 你现在问的问题是,从我的答案中获取代码,如何获取所有员工的所有 ID 或姓名。 (获取 facet 对象的键的所有名称)
现在让我们用打字稿告诉你
someFunction() {
this.http.get('someUrl').map(response => {
console.log(JSON.stringify(response.json())); // check what you actually retrieve
let decoded = response.json();
for(let office of decoded.OFFICE) {
console.log(office.location);
for(let employee of office.employees) {
console.log(employee.fullName);
}
}
});
}
该程序的预期输出
> New York
> Jon Skeet
> Random Stranger
> Amsterdam
> Ivaro18
> Some-Random Stranger
我认为这个伪代码会让你思考一些开箱即用的问题并找到你问题的答案。 如果您不能详细说明您想要的输出内容,我很乐意随时(甚至是周末)为您提供帮助,只需发表评论,我会在有时间的时候回复您!
@Ivaro18 感谢您的回答。 我想计算@NAME
为@NAME
设置数组并显示每个FACET[]
的 KEY 的数量,这似乎是最终目标。
是的,你完全明白我的意思。 但我希望输出是该FACET[]
每个@KEY
例子 :
<ion-select [(ngModel)]="refine" (ionChange)="optionsFn();">
<ion-option value="..." *ngFor="let item of date">{{item["@NAME"]}},({{item["@COUNT"]}})</ion-option>
</ion-select>
<ion-list>
<ion-item *ngFor="let item of foundRepos" (click)="itemClicked($event,item)">
<h3> {{ item[@KEY"] }}</h3>
</ion-item>
</ion-list>
.
optionsFn(): void {
this.http.get("my_url")
.subscribe(data =>{
this.date=data.json().RESULT.FACET; //get @NAME
},error=>{
err => console.error(err),
() => console.log('getRepos completed')
);
console.log(this.date);
console.log(this.date);
this.goToapply()
}
goToapply(){
this.http.get("my_url")
.subscribe(data =>{
this.foundRepos=data.json().RESULT.FACET[0,1,2,3.4......].FACET_VALUES; ///get @KEY
},error=>{
console.log(error);
} );
}
从上面 ion-select 是 show creator
、 lang
和bnb
,我想如果当我选择lang
ion-option value="..."
来保留"@NAME"
number
@NAME
示例计数量为 3 和creator
是 ion-option value="..." << is 0lang
is ion-option value="..." << is 1bnb
是 ion-option value="..." << is 2 如果我得到了value
,我会把它带到goToapply()
来设置goToapply()
FACET[]
bnb
我得到值 =2 和console.log this.refine
是显示2
let p = this.refine
,这样p = 2
this.foundRepos=data.json().RESULT.FACET[p].FACET_VALUES;
用于在ion-list
显示@KEY
当我选择lang
输出时
> tha
> eng
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.