Цикл For для создания пары ключ-значение в TypeScript (ES 6) - PullRequest
1 голос
/ 20 марта 2019

Я хочу определить структуру данных, в которой я могу получить имя, используя определенный идентификатор.Я пытаюсь добавить их к диктату и хочу вернуть имя

    let dict = [];
    for (let company of this.listOfCompanies) {
      dict.push({
        [company.id]: companyName
      });
    }

Это правильный способ сделать это?И как мне вернуть мое имя?Могу ли я сделать так?

console.log(dict[83519952]);

Ответы [ 4 ]

2 голосов
/ 20 марта 2019

Установите тип, чтобы помочь linter и compiler и использовать объект вместо массива.

let dict: { [id: number]: string } = {};
for (const company of this.listOfCompanies) {
  dict[company.id] = company.name;
}

dict также может быть объявлен как const, если вы не планируете изменять ссылку на него.

0 голосов
/ 20 марта 2019

Спасибо за отличные ответы.Я закончил тем, что использовал Карту (у которой были некоторые более приятные возможности не выдавать ошибки, когда она не определена):

Я определю это:

companiesNames: Map<number, string> = new Map<number, string>();

Тогда в моей функции:

    for (let company of this.listOfCompanies) {
      this.companiesNames.set(+company.id, company.name);
    }
    console.log(this.companiesNames.get(83519952));

Это сработало нормально, но есть ли причина, по которой это был бы плохой выбор?

0 голосов
/ 20 марта 2019

Попробуйте, считая dict объектом, а не массивом. Вы можете сделать это, используя Array.reduce.

Это пример в vanilla es6, демонстрирующий это:

const listOfCompanies = [{"id": 100, "companyName": "foo"}, {"id": 101, "companyName": "bar"}];
const dict = listOfCompanies.reduce((acc, {id, companyName} ) =>{ //destructuring id and companyName keys from the object to variables
   acc[id] = companyName;
   return acc;
},{});
console.log(dict[100]);
console.log(dict[101]);
0 голосов
/ 20 марта 2019
 let dict = [];
    for (let company of this.listOfCompanies) {
      dict[company.id]= companyName;
      });
    }

Это может помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...