Работа с массивом объектов и привязкой одних данных к другим на выходе

128
02 февраля 2021, 22:10

Я новичок в JavaScript, только учусь.
Ниже находится объект, который содержит контактную информацию.

var contacts = [
  {
    name: "Laurel",
    phone: "123 456 7890",
    email: "laurel@comics.com",
    friends: ["Hardy", "Abbott", "Costello"]
  },
  {
    name: "Hardy",
    phone: "321 654 0987",
    email: "hardy@hardyharhar.com",
    friends: ["Laurel", "Buster"]
  },
  {
    name: "Buster",
    phone: "987 654 3210",
    email: "buster@keaton.ca",
    friends: ["Hardy"]
  },
  {
    name: "Abbott",
    phone: "888 123 4567",
    email: "abbott@whosonfirst.co",
    friends: ["Costello", "Laurel"]
  },
  {
    name: "Costello",
    phone: "767 676 7676",
    email: "costello@imonfirst.co",
    friends: ["Abbott", "Laurel"]
  }
];
/* You should be changing this code */
function findFriend(data, name, field) {
  /* IMPLEMENT ME */
}

Мы хотим построить функцию, которая будет принимать три параметра. Первый параметр - сами данные, второй - имя контакта, а третий параметр будет указывать либо «телефон», либо «электронную почту».
Функция примет эти параметры и вернет имя и указанное поле первого друга в списке друзей контакта.
Например, используя данные ниже и указав «Laurel» в качестве первого параметра и «email» в качестве второго,функция будет смотреть на список друзей Laurel и возвращать имя «Hardy» и адрес электронной почты Hardy.
Примеры ожидаемого вывода:


console.log(findFriend(contacts, "Abbott", "phone"));// returns {name: "Costello", phone: "767 676 7676"}
console.log(findFriend(contacts, "Buster", "email"));// returns {name: "Hardy", email: "hardy@hardyharhar.com"}
console.log(findFriend(contacts, "Bob", "phone"));// returns "Not found"
console.log(findFriend(contacts, "Costello", "birthday"));// returns "Not found"

Самое сложное для меня это как связать данные, которые от нас хотят. Я понимаю логику, но на деле не знаю как это реализовать( да и села в последнюю минуту и не успеваю все сдать в срок( Помогите, пожалуйста.

Answer 1

let contacts = [{ 
    name: "Laurel", 
    phone: "123 456 7890", 
    email: "laurel@comics.com", 
    friends: ["Hardy", "Abbott", "Costello"] 
  }, 
  { 
    name: "Hardy", 
    phone: "321 654 0987", 
    email: "hardy@hardyharhar.com", 
    friends: ["Laurel", "Buster"] 
  }, 
  { 
    name: "Buster", 
    phone: "987 654 3210", 
    email: "buster@keaton.ca", 
    friends: ["Hardy"] 
  }, 
  { 
    name: "Abbott", 
    phone: "888 123 4567", 
    email: "abbott@whosonfirst.co", 
    friends: ["Costello", "Laurel"] 
  }, 
  { 
    name: "Costello", 
    phone: "767 676 7676", 
    email: "costello@imonfirst.co", 
    friends: ["Abbott", "Laurel"] 
  } 
]; 
 
/* You should be changing this code */ 
 
function findFriend(data, name, field) { 
  let res = null; // будет результатом 
  data.forEach(function(e) { 
   
    if (e.name === name) { // прохожу по всем данным и ищу по name 
      let friend = e.friends[0]; // отбираю первого друга 
 
      data.forEach(ee => { 
        if (ee.name === friend) { // ищу друга по name во всех данных 
          res = ee[field]; // когда нашел - получаю нужное поле и записываю в результат 
        } 
      }); 
    } 
  }); 
  return res; // возвращаю результат 
} 
 
document.addEventListener('DOMContentLoaded', function() { 
  console.log(findFriend(contacts, "Abbott", "phone")); 
});

READ ALSO
Поиск подстроки в начале QString

Поиск подстроки в начале QString

Как найти подстроку в начале строки, и убрать чувствительность к регистру?

127
Медианная фильтрация изображений

Медианная фильтрация изображений

Это довольно трудоёмкий алгоритм, если делать его в лобСложность там будет что-то типа N*N*n*n*log(n), где N - размер изображений (для простоты асимптотик...

105
Как общатся с устройством на котором установленна Firmata на C++?

Как общатся с устройством на котором установленна Firmata на C++?

Допустим есть устройство на котором стоит Firmata, например ArduinoКак можно связятся с этим устройством на C++? Есть ли какая-то библиотека для данных...

88
Сортировка массива по двум полям С++ [закрыт]

Сортировка массива по двум полям С++ [закрыт]

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение

128