Фильтровать список на основе выбора - PullRequest
0 голосов
/ 03 ноября 2019

Учитывая данные ниже, у меня есть два списка выбора, первый список выбора должен отображать имя каждого человека ... второй список выбора - два, отображают имя детей выбранного человека. Используя lodash, какой самый простой способ сделать это?

const people = [{
    id: "1",
    name: "bob",
    gender: "male",
    children: [{
      id: "1",
      name: "sarah"
    }]

  },
  {
    id: "2",
    name: "tom",
    gender: "male",
    children: [{
      id: "1",
      name: "lisa"
    }]

  },
  {
    id: "3",
    name: "sue",
    gender: "female",
    children: [{
      id: "1",
      name: "larry"
    }]

  }
]

1 Ответ

0 голосов
/ 03 ноября 2019

Пожалуйста, найдите решение, как показано ниже:

import map from "lodash/map";
import partialRight from "lodash/partialRight";
import pick from "lodash/pick";
import find from "lodash/find";

const test = [
  {
    id: "2",
    name: "tom",
    gender: "male",
    children: [
      {
        id: "1",
        name: "lisa"
      }
    ]
  },
  {
    id: "3",
    name: "sue",
    gender: "female",
    children: [
      {
        id: "1",
        name: "larry"
      }
    ]
  }
];

// Person selection list
const persons = map(test, partialRight(pick, ["id", "name", "gender"]));
// Replace selected person value in `persons[0]`.
const childrens = find(test, item => item.id === persons[0].id).children;

...