Skip to content

Instantly share code, notes, and snippets.

@dmitryt
Created November 13, 2013 22:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dmitryt/7457816 to your computer and use it in GitHub Desktop.
Save dmitryt/7457816 to your computer and use it in GitHub Desktop.
Задача №1
Напишите реализацию функции getObject(path, obj), которая вернет значение аттрибута объекта obj по заданному пути:
var o = {a: {b: ‘c’}};
getObject(‘a.b’, o) // ‘c’
getObject(‘a’, o) // {b: ‘c’}
getObject(‘d’, o) // undefined
Задача №2.
Реализация функции deepCopy - для копирования объекта с учетом вложенных объектов:
var a = {b: ‘c’, d: {e: ‘f’}},
b = deepCopy(a);
a.d = 12;
b.d // {e: ‘f’}
Задача №3.
Напишите функцию getFriends, которая бы возвращала массив друзей юзера по передаваемому id.
Коллекция, с которой будет работать функция:
var people = [
{id: 1, name: 'Brad', friends: [2,5,6]},
{id: 2, name: 'John', friends: [1, 3]},
{id: 3, name: 'Tom', friends: [2, 5]},
{id: 4, name: 'Fil', friends: null},
{id: 5, name: 'John', friends: [1, 3]},
{id: 6, name: 'Jim', friends: [1]}
];
var getFriends = function(userId) {
// Put you code here
};
Example:
getFriends(2) // [{id: 1, name: 'Brad', friends: [2,5,6]}, {id: 3, name: 'Tom', friends: [2, 5]}]
getFriends(4) // []
getFriends(100500) // null
@sudodoki
Copy link

Поменть перед следующей раздачей:

  • console.log(getObject('d', o)); // undefined
    нужно было еще нестед проперти несуществующую заюзать - иначе нет проверок. а вдруг там пусто
  • нестед объкты для deepCopy
  • findFriends бы поменять сигнатуру, чтобы и коллекцию, и айди находило, или чтобы через call явно происходил вызов, а-ля getFriends.call(people, id)
  • findFriends в коллекции перемешать порядок объектов, чтоб не повадно было использовать id как индекс массива. Или просто в id что-то более рандомное сунуть, аля guid

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment