tra*_*rap 105 angular2-services angular
我有一个组件和服务:
零件:
export class WebUserProfileViewComponent {
persons: Person [];
personId: number;
constructor( params: RouteParams, private personService: PersonService) {
this.personId = params.get('id');
this.persons = this. personService.getPersons();
console.log(this.personId);
}
}Run Code Online (Sandbox Code Playgroud)
服务:
@Injectable()
export class PersonService {
getPersons(){
var persons: Person[] = [
{id: 1, firstName:'Hans', lastName:'Mustermann', email: 'mustermann@test.com', company:'Test', country:'DE'},
{id: 2, firstName:'Muster', lastName:'Mustermann', email: 'mustermann@test.com', company:'test', country:'DE'},
{id:3, firstName:'Thomas', lastName:'Mustermann', email: 'mustermannt@tesrt.com', company:'test', country:'DE'}
];
return persons;
}
}Run Code Online (Sandbox Code Playgroud)
我想获得带有Id('personID')的Person Item.我从Routeparam获得的personID.为此,我需要foreach循环?但我还没有找到解决方案.
提前致谢!
And*_*ich 215
你需要使用方法Array.filter:
this.persons = this.personService.getPersons().filter(x => x.id == this.personId)[0];
Run Code Online (Sandbox Code Playgroud)
要么 Array.find
this.persons = this.personService.getPersons().find(x => x.id == this.personId);
Run Code Online (Sandbox Code Playgroud)
Hai*_*inh 55
假设我有以下数组:
Skins[
{Id: 1, Name: "oily skin"},
{Id: 2, Name: "dry skin"}
];
Run Code Online (Sandbox Code Playgroud)
如果我们想获得项目Id = 1和Name = "oily skin",我们会尽力如下:
var skinName = skins.find(x=>x.Id == "1").Name;
Run Code Online (Sandbox Code Playgroud)
结果将返回skinName为"Oily skin".
请试一试,谢谢你,最好的关注!
Nat*_*eck 12
你可以结合.find箭头函数和解构。以 MDN 中的这个例子为例。
const inventory = [
{name: 'apples', quantity: 2},
{name: 'bananas', quantity: 0},
{name: 'cherries', quantity: 5}
];
const result = inventory.find( ({ name }) => name === 'cherries' );
console.log(result) // { name: 'cherries', quantity: 5 }
Run Code Online (Sandbox Code Playgroud)
如果经常使用此搜索,请将数据结构转换为地图
mapPersons: Map<number, Person>;
// prepare the map - call once or when person array change
populateMap() : void {
this.mapPersons = new Map();
for (let o of this.personService.getPersons()) this.mapPersons.set(o.id, o);
}
getPerson(id: number) : Person {
return this.mapPersons.get(id);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
在您的服务中使用此代码:
return this.getReports(accessToken)
.then(reports => reports.filter(report => report.id === id)[0]);
Run Code Online (Sandbox Code Playgroud)
从TypeScript中,您可以使用本机JS数组filter()方法:
let filteredElements=array.filter(element => element.field == filterValue);
Run Code Online (Sandbox Code Playgroud)
它返回一个仅包含原始数组中匹配元素的数组(0、1或更多)
参考:https : //developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
| 归档时间: |
|
| 查看次数: |
287148 次 |
| 最近记录: |