Как реализовать данный код? Как сделать такие функции? (данный код менять нельзя)
Вот как friends занести в функции select и filterIn
var bestFriends = lib.query(
friends,
lib.select('name', 'gender', 'email'),
lib.filterIn('favoriteFruit', ['Яблоко', 'Картофель'])
);
select, filterIn - функции, результатом которых является работа над коллекцией friends
Не совсем так. Функции .select() и .filterIn() - это функции, результатом которых будут функции, которые будут работать над коллекцией friends
Функция .query() получает на вход
friends, friends, полученную в результате выполнения lib.select('name', 'gender', 'email')friends, полученную в результате выполнения lib.filterIn('favoriteFruit', ['Яблоко', 'Картофель'])Примерный код
var lib = {
query: function (data, select, filter) {
return select(filter(data))
},
select: function (...fields) {
return function (data) {
return data.map(function (x) {
var item = {}
fields.forEach(function (field) {
item[field] = x[field]
})
return item
})
}
},
filterIn: function (field, values) {
return function (data) {
return data.filter(function (x) {
return values.indexOf(x[field]) > -1
})
}
}
}
var friends = [
{
name: 'Михаил',
gender: 'муж',
email: 'mikhail@example.com',
favoriteFruit: 'Тыква'
},
{
name: 'Алексей',
gender: 'муж',
email: 'aleksey@example.com',
favoriteFruit: 'Дыня'
},
{
name: 'Федор',
gender: 'муж',
email: 'fedor@example.com',
favoriteFruit: 'Яблоко'
},
{
name: 'Иван',
gender: 'муж',
email: 'ivan@example.com',
favoriteFruit: 'Мандарин'
},
{
name: 'Петр',
gender: 'муж',
email: 'petr@example.com',
favoriteFruit: 'Картофель'
}
]
var bestFriends = lib.query(
friends,
lib.select('name', 'gender', 'email'),
lib.filterIn('favoriteFruit', ['Яблоко', 'Картофель'])
);
console.log(bestFriends)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости