Связь между двумя JSON через ключи - PullRequest
0 голосов
/ 13 декабря 2018

Итак, у меня есть 2 разных JSON.Книги

{
  "books": [{
    "name": "Lord of the rings",
    "author": 1,
    "year": 1937,
    "genre": 3,
    "imageUrl": "https://cdn.lifehack.org/wp-content/uploads/2015/03/9780618640157_custom-s6-c30.jpg",
    "availability": true
  }]
}

, а другой - Авторы

{
  "authors": [{
    "id": 1,
    "name": "J.R.R. Tolkien"
  }, {
    "id": 2,
    "name": "Harper Lee"
  }, {
    "id": 3,
    "name": "J.K. Rowling"
  }]
}

Я хочу, чтобы у автора был идентификатор, поэтому, когда я покажу автора книги, яхочу имя (это во втором JSON), а не идентификатор.Как я могу это сделать?Не уверен, что имеет значение, но я работаю в VUE.

Ответы [ 3 ]

0 голосов
/ 13 декабря 2018

Я бы использовал собственный метод Array.filter, например, так:

let tolkien = authors.filter(author => !!author.id === 1)

Использование .filter означает, что вам не нужно включать библиотеку типа lodash только для этого одного метода.

0 голосов
/ 13 декабря 2018

Вы можете создать новый объект с ключами, сопоставленными с авторами (например, author[1] = {id: 1, ...}), который позволит вам быстро и легко получить доступ к любому автору по его / ее идентификатору.Пример:

let authorByIds = {};
authors.forEach(author => {
    authorByIds[author.id] = {...author};
});

let firstBook = books[0];

console.log(authorByIds[firstBook.author]);
// will output author with id = 1, i.e J.R.R. Tolkien
0 голосов
/ 13 декабря 2018

Вы можете использовать метод поиска loash, например,

Документация: https://lodash.com/docs/4.17.11#find

_.find(authors, { 'id': 1 });
...