2016-07-11 9 views
0

ich aus einer Datendatei mit über 500 Einträgen wie lese:In Angular2 Maximalwert für zwei Schlüssel finden

const LOCKERS: Locker[] = [ 
    { lockerNumber: 1, room: 'Ladies', size: 'Small'}, 
    { lockerNumber: 2, room: 'Ladies', size: 'Small'}, 
    { lockerNumber: 3, room: 'Ladies', size: 'Small'}, 
    { lockerNumber: 4, room: 'Ladies', size: 'Small'}, 
    { lockerNumber: 1, room: 'Ladies', size: 'Large'}, 
    { lockerNumber: 2, room: 'Ladies', size: 'Large'}, 
    { lockerNumber: 3, room: 'Ladies', size: 'Large'}, 
    { lockerNumber: 1, room: 'Gents', size: 'Small'}, 
    { lockerNumber: 2, room: 'Gents', size: 'Small'}, 
    { lockerNumber: 3, room: 'Gents', size: 'Small'}, 
    { lockerNumber: 1, room: 'Gents', size: 'Large'}, 
    { lockerNumber: 2, room: 'Gents', size: 'Large'}, 
    { lockerNumber: 3, room: 'Gents', size: 'Large'}, 
    { lockerNumber: 4, room: 'Gents', size: 'Large'} 
]; 

Mein Service ist wie folgt:

import { Injectable } from '@angular/core'; 
import { Locker } from './locker'; 
import { LOCKERS } from './mock-lockers'; 

@Injectable() 
export class LockerService { 
    getLockers() { 
     return Promise.resolve(LOCKERS); 
    } 
} 

Und meine Komponente:

import { Component } from '@angular/core'; 
import { Locker } from './locker'; 
import { LockerService } from './locker.service'; 

@Component({ 
    selector: 'my-app', 
    templateUrl: './app/app.locker.html', 
    providers: [LockerService] 
}) 

export class AppComponent { 
    title = 'The lockerrooms'; 
    lockers: Locker[]; 
    ladiesSmall: number; 
    ladiesLarge: number; 
    gentsSmall: number; 
    gentsLarge: number; 

    constructor(
    private lockerService: LockerService 

) { } 

    getLockers() { 
    this.lockerService.getLockers() 
     .then(data => this.lockers = data) 
    } 

    ngOnInit() { 
    this.getLockers(); 
    } 
} 

Ich bin auf der Suche nach einer Möglichkeit, die maximale Schließfachnummer für jede Zimmergröße Kombination zu erhalten. Gestellte Daraus resultierende

MaxLadiesSmall 4 
MaxLadiesLarge 3 
MaxGentsSmall 3 
MaxGentsLarge 4 

Antwort

0

Für Operationen wie das ist perfekt die Lodash Bibliothek und ihre chaining ability. Auch der Code ist ziemlich readable.

Try this:

var gentsSmallMaximum = _(LOCKERS) 
    .filter(locker => locker.room === 'Gents' && locker.size === 'Small') 
    .map(locker => locker.lockerNumber) 
    .max(); 

einfach die Bibliothek importieren

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script> 

oder Sie können auf jeden Fall eingegeben, wenn Sie Typoskript Version wollen:

https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/lodash 

dann das Setzen vor Ihrer @ Komponente, um TypeScript zum Kompilieren zu zwingen:

declare var _: any; 
+0

Wenn ich versuche, diesen Vorschlag zu meiner Komponente und index.html hinzuzufügen, bekomme ich eine Ausnahme: ReferenceError: _ ist nicht definiert. –

+0

Ich habe versucht den Teil "var gentsSmallMaximum ..." beide getrennt wie in der ngOnOnit Funktion. –

+0

Problem gelöst. Das lodash-Skript jetzt als ** last ** in meiner index.html. –

Verwandte Themen