Как выбрать объект из массива по идентификатору? - PullRequest
0 голосов
/ 24 января 2019

У меня есть объект, который содержит массив под названием Applicants:

const persons={"entities":{"applicants":[{"lastName":"Agamemnon","isPrimaryApplicant":false,"id":"16671520038"},{"lastName":"Purdy","isPrimaryApplicant":true,"id":"16671520039"},{"lastName":"Brekky","isPrimaryApplicant":true,"id":"16671520040"},{"lastName":"Abouli","isPrimaryApplicant":true,"id":"16671520041"}]}}

Как мне вернуть элемент из массива entity.applicants по идентификатору?

Я пробовал что-то вроде:

const applicantsById = persons.entities.applicants.find(a => a.id ===id)

console.log(applicantsById.get('16671520041'))

Но я не могу понять, как передать идентификатор?

codepen

Ответы [ 5 ]

0 голосов
/ 24 января 2019

Вы должны создать функцию.

const applicantsById = (id) => persons.entities.applicants.find(a => a.id === id)
applicantsById('16671520041')

это вернет вам требуемый результат

0 голосов
/ 24 января 2019

Вы можете указать свой идентификатор, прежде чем сделать find:

const id = '16671520041';
const applicantsById = persons.entities.applicants.find(a => a.id ===id)

Или вы можете определить функцию, которая принимает идентификатор в качестве аргумента. В других ответах рассказывалось, как это сделать с помощью современных стрелок ES6. Если вы не знакомы с ними, вот способ декларации функции ES5. Здесь я также передал данные о людях в функцию.

const persons={"entities":{"applicants":[{"lastName":"Agamemnon","isPrimaryApplicant":false,"id":"16671520038"},{"lastName":"Purdy","isPrimaryApplicant":true,"id":"16671520039"},{"lastName":"Brekky","isPrimaryApplicant":true,"id":"16671520040"},{"lastName":"Abouli","isPrimaryApplicant":true,"id":"16671520041"}]}}

// Accept persons data, and an id
function getApplicantById(persons, id) {

  // Return the found applicant from the function
  return persons.entities.applicants.find(a => a.id ===id);
}

// Pass in the data, and the id to the function
const applicant = getApplicantById(persons, '16671520041');
console.log(applicant);
0 голосов
/ 24 января 2019

Используйте фильтр для этого

const persons={"entities":{"applicants":[{"lastName":"Agamemnon","isPrimaryApplicant":false,"id":"16671520038"},{"lastName":"Purdy","isPrimaryApplicant":true,"id":"16671520039"},{"lastName":"Brekky","isPrimaryApplicant":true,"id":"16671520040"},{"lastName":"Abouli","isPrimaryApplicant":true,"id":"16671520041"}]}}

console.log(get(16671520039));

function get(id)
{
return persons.entities.applicants.filter((e)=>e.id===id)
}
0 голосов
/ 24 января 2019

Использование vanilla javascript :

Вам необходимо определить, что такое id, прежде чем устанавливать переменную applicantsById.Таким образом, вы можете найти id в вашем массиве объектов, равный id, который вы определили.

const id = '16671520041',
applicantsById = persons.entities.applicants.find(a => a.id === id);

Вы можете расширить его до функции, если хотите использовать ее с несколькими идентификаторами:

const persons = {"entities":{"applicants":[{"lastName":"Agamemnon","isPrimaryApplicant":false,"id":"16671520038"},{"lastName":"Purdy","isPrimaryApplicant":true,"id":"16671520039"},{"lastName":"Brekky","isPrimaryApplicant":true,"id":"16671520040"},{"lastName":"Abouli","isPrimaryApplicant":true,"id":"16671520041"}]}},
getApplicantById = _id => persons.entities.applicants.find(({id}) => id === _id);

console.log(getApplicantById('16671520041')); // Abouli obj
console.log(getApplicantById('16671520039')); // Purdy obj

Или, используя Lodash и ES6 :

const id = "16671520041";
res = _.find(persons.entities.applicants, {id}); // Abouli obj
0 голосов
/ 24 января 2019

applicantsById должна быть функцией, параметризованной для идентификатора

const persons={"entities":{"applicants":[{"lastName":"Agamemnon","isPrimaryApplicant":false,"id":"16671520038"},{"lastName":"Purdy","isPrimaryApplicant":true,"id":"16671520039"},{"lastName":"Brekky","isPrimaryApplicant":true,"id":"16671520040"},{"lastName":"Abouli","isPrimaryApplicant":true,"id":"16671520041"}]}}

const applicantsById = id => persons.entities.applicants.find(a => a.id ===id)
console.log(applicantsById('16671520041'))
...