получение данных по идентификатору от объекта

1

это код

У объекта peeps есть люди, такие как "Deen":

const peeps = {
  1: {
    id: 1,
    name: 'Deen',
    readerCategory: 'champ',
  },
  .
  .
  .
};

И у массива chart есть комбинация, из которой выглядывает и ID книги понравившийся:

const chart = [
  {
    id: 1,
    peepsID: '1',
    bookLikedID: '1',
  },
  .
  .
  .
];

У объекта books есть такие названия книг, как "Серия Гарри Поттера":

const books = {
  1: {
    id: 1,
    name: 'Harry Potter Series',
  },

Исходя из этой информации, один из элементов списка может выглядеть так:

* Deen likes a Harry Potter Series book.
  • 0
    Я надеюсь, что вам нравится ответ, который я дал, если вам потребуются какие-либо дополнительные объяснения или что-то в этом роде, не стесняйтесь отвечать на этот комментарий, если у вас недостаточно репутации, чтобы комментировать ответ, который я предоставил! :)
  • 0
    Можете ли вы помочь мне выяснить, какие люди любят ту же книгу
Показать ещё 4 комментария
Теги:
arrays

1 ответ

1

Вы всегда можете сделать что-то подобное, как вы можете видеть, мы просто перебираем массив chart, получая соответствующий id и возвращая соответствующую строку в соответствии со bookLikedID, peepsID & name.

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

редактировать

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

Редактировать 2

Люди, которым нравятся те же книги, которые запрашиваются, как вы можете видеть в этом примере, функция принимает еще один аргумент, она просто берет название книги, которую вы запрашиваете. Эта функция будет использовать reduce функцию, чтобы сгенерировать массив имен, которые любят книгу "х".

Я также использовал Object.keys и Object.values для обновления, чтобы найти всех людей, которым нравится книга 'x'.

const peeps={1:{id:1,name:"Deen",readerCategory:"champ"},2:{id:2,name:"Tom",readerCategory:"noob"},3:{id:3,name:"Jack",readerCategory:"GOD"}};
const chart=[{id:1,peepsID:"1",bookLikedID:"1"},{id:2,peepsID:"2",bookLikedID:"1"},{id:3,peepsID:"3",bookLikedID:"2"}]; 
const books={1:{id:1,name:"Harry Potter Series"},2:{id:2,name:"Lord Of The Rings Series"},3:{id:3,name:"Fifty Shades of Grey"}};

// Edit
const results = a => b => c => a.map(o => '${b[o.peepsID].name} likes ${c[o.bookLikedID].name}');

// Edit 2
const similarTastes = a => b => c => n => a.reduce((v, o) => {
  const found = Object.values(c).find(({name}) => name == n);
  if (found && o.bookLikedID == found.id) v.push(b[o.peepsID].name);
  return v;
}, []);

// Edit 3
const getAllSimilarTastes = a => b => c => {
  const obj = {};
  Object.keys(c).map(k => obj[c[k].name] = similarTastes(a)(b)(c)(c[k].name));
  return obj;
};

// Edit 4
const getUnliked = a => b => c => {
  const o = getAllSimilarTastes(a)(b)(c);
  return Object.keys(o).filter(x => o[x].length <= 0);
};

const isUnliked = a => b => c => n => getUnliked(a)(b)(c).indexOf(n) >= 0;

// Results.
console.log(results(chart)(peeps)(books));
console.log(similarTastes(chart)(peeps)(books)('Harry Potter Series'));
console.log(getAllSimilarTastes(chart)(peeps)(books));
console.log(getUnliked(chart)(peeps)(books));
console.log(isUnliked(chart)(peeps)(books)('Fifty Shades of Grey'));
console.log(isUnliked(chart)(peeps)(books)('Harry Potter Series'));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню