Метод фильтрации массива - PullRequest
0 голосов
/ 23 марта 2020

Я работаю над реализацией в angular, чтобы посмотреть в массив и вывести значение в соответствии с именем определения.

let definitions = [
{
  definitionsTest1: [
    {
      headerName: 'Status',
      field: 'status',
      filter: true,
      sortable: true
    },
    {
      headerName: 'Name',
      field: 'name',
      filter: true,
      sortable: true
    },
    {
      headerName: 'Project',
      field: 'project',
      filter: true,
      sortable: true
    }
  ]
},
{
  definitionsTest2: [
    {
      headerName: 'Status',
      field: 'status',
      filter: true,
      sortable: true
    },
    {
      headerName: 'Name',
      field: 'name',
      filter: true,
      sortable: true
    },
    {
      headerName: 'Project',
      field: 'project',
      filter: true,
      sortable: true
    }
  ]
}
]

Я делаю массив, поэтому я могу Измени это. Но я думаю о том, что find, но поскольку у них разные имена, я не могу написать что-то вроде этого

return definitions.find(x => x === 'definitionsTest2')

Или, по крайней мере, я не уверен, как я могу применить find метод там.

Не могли бы вы помочь мне или дать несколько идей о том, как мне изменить массив или что я могу сделать?

Примечание Я могу изменить массив или добавьте новые вещи, но там должны быть names (DefinitionTest1 и DefinitionsTest2).

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Во-первых, если каждому объекту определения назначено свойство, вам не нужен массив. Массив definitions может быть объектом. Примерно так:

let definitions = {
   definitionsTest1: {...},
   definitionsTest2: {...},
   ...
};

Вы можете получить ключи исходного объекта и посмотреть, существует ли нужный ключ.

Чтобы получить ключи, просто используйте Object.keys():

let keys = Object.keys(definitions);

Затем найдите нужный ключ:

let key = '...';
let result;

if (keys.indexOf(key) !== -1) {
    result = definitions[key];
}

Надеюсь, это поможет.

0 голосов
/ 23 марта 2020

Вы можете проверить, включает ли ключ объекта искомый ключ, вот так:

return definitions.find(x => Object.keys(x).includes('definitionsTest2'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...