2015-07-13 7 views
0

У меня есть таблица определяется следующим образом:Лучший способ поиска строки в таблице?

export interface Answer { 
    order: number, 
    text: string 
} 

export class Config { 
    answers:Answer[]; 

    mapAnswerTextToOrder(answer:string):number { 
    return (this.answers[this.answers.findIndex((value:Answer):boolean => {return(value.text == answer);})].order); 
    } 
} 

Целью mapAnswerTextToOrder является для поиска строки answer и вернуть его соответствующий order. Код, который у меня выше, не соответствует ES5. Я думаю, что знаю, как переписать его с помощью .map, но он уже очень уродлив, он станет еще более уродливым.

Должен быть более чистый способ добиться того же самого в TypeScript. У кого-нибудь есть предложение?

ответ

1

Вот как я хотел бы сделать это сегодня

export interface Answer { 
    order: number, 
    answer: string 
} 

export class Config { 
    answers:Answer[]; 

    mapAnswerTextToOrder(answer:string):number { 
    return this.answers.filter(a=>a.answer == answer)[0].order; 
    } 
} 
+0

Спасибо. Несколько вопросов: нет .filter новая функция javascript? Также я не понимаю строку: «return this.answers.filter (a => a.answer == answer) [0] .order;" в полной мере. В частности, аргумент фильтрации - это обратный вызов, который вы поставляете с помощью толстой стрелки. Но: можете ли вы разделить фразу: «a => a.answer == answer»? – pitosalas

+0

'.filter новая функция javascript' ее ES5 (7 лет). – basarat

+0

'a => a.answer == answer' для члена' a' в 'ответах' его' a.answer' должен равняться 'answer', который был передан в функцию – basarat

Смежные вопросы