Получить подмассив на основе значения массива - PullRequest
5 голосов
/ 16 апреля 2019

У меня есть массив categories:

{id: 1, catName: "test", subCategories: Array(2)}

Мне нужно получить массив subCategories на основе id из category.

Это возвращает весь category объект, как я могу изменить его, чтобы он возвращал только массив subCategories?

  const subCategories = categoriesWithSub.filter(category => {
    return category.id === departments.catId;
  });

Ответы [ 5 ]

5 голосов
/ 16 апреля 2019

Уничтожить find вызов:

const { subCategories } = categoriesWithSub.find(({ id }) => id === departments.catId);
2 голосов
/ 16 апреля 2019

Используйте Array#find, чтобы получить объект и получить массив, используя обозначение точки или скобки .

const subCategories = (categoriesWithSub.find(category => {
  return category.id === departments.catId;
}) || {}).subCategories; // if find returns undefined then use an empty object to avoid error, alternately you can use if condition
2 голосов
/ 16 апреля 2019

Вы можете использовать reduce.

const subCategories = categoriesWithSub.reduce((acc, category) => {
  if (category.id === departments.catId) {
    return acc.concat(category. subCategories)
  }
  return acc;
}, []);

Примечание, reduce - действительно мощный инструмент.find, map, forEach, filter подобны сокращенным версиям reduce для конкретных задач.

2 голосов
/ 16 апреля 2019

Попробуйте это:

let categories = [ {id: 1, catName: "test", subCategories: ["test1","test2"]}, {id: 2, catName: "test", subCategories: Array(2)} ]
let departments = { catId: 1 }
const subCategories = categories.find(category => {
    return category.id === departments.catId;
  }).subCategories;
console.log( subCategories );
0 голосов
/ 16 апреля 2019

Попробуйте это

function getSubCategory() {
        var categoriesWithSub = [{ id: 1, catName: "test", subCategories: ["test1","test2"] }, { id: 2, catName: "test", subCategories: ["test1","test2"] }]
        var catId = 1;

        for (var category = 0; category < categoriesWithSub.length; category++) {
             if (categoriesWithSub[category].id == catId)
                return categoriesWithSub[category].subCategories;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...