forked from urfu-2016/javascript-task-4
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
131 lines (116 loc) · 3.98 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
'use strict';
var lego = require('./lego');
var friends = [
{
name: 'Сэм',
age: 29,
gender: 'Мужской',
email: '[email protected]',
phone: '+7 (555) 505-3570',
favoriteFruit: 'Картофель'
},
{
name: 'Эмили',
age: 30,
gender: 'Женский',
email: '[email protected]',
phone: '+7 (555) 539-2625',
favoriteFruit: 'Яблоко'
},
{
name: 'Мэт',
age: 27,
gender: 'Мужской',
email: '[email protected]',
phone: '+7 (555) 526-2845',
favoriteFruit: 'Яблоко'
},
{
name: 'Брэд',
age: 28,
gender: 'Мужской',
email: '[email protected]',
phone: '+7 (555) 519-3304',
favoriteFruit: 'Банан'
},
{
name: 'Шерри',
age: 27,
gender: 'Женский',
email: '[email protected]',
phone: '+7 (555) 526-2845',
favoriteFruit: 'Картофель'
},
{
name: 'Керри',
age: 36,
gender: 'Женский',
email: '[email protected]',
phone: '+7 (555) 526-2845',
favoriteFruit: 'Апельсин'
},
{
name: 'Стелла',
age: 25,
gender: 'Женский',
email: '[email protected]',
phone: '+7 (555) 415-3100',
favoriteFruit: 'Картофель'
}
];
// Находим настоящих друзей
var bestFriends = lego.query(
// среди всех друзей.
friends,
// Выбираем имена и email для праздничной рассылки
lego.select('name', 'gender', 'email'),
// Отбираем только тех, кто любит Яблоки или Картофель (самое важное !!!)
lego.filterIn('favoriteFruit', ['Яблоко', 'Картофель']),
// Отсортируем их по возрасту (но зачем?)
lego.sortBy('age', 'asc'), // Бывает только asc (от меньшего к большему) или desc (наоборот)
// А пол выведем только первой буквой для удобства
lego.format('gender', function (value) {
return value[0];
}),
// Настоящих друзей не может быть много
lego.limit(4)
);
/* Выведет:
[
{ name: 'Стелла', gender: 'Ж', email: '[email protected]' },
{ name: 'Мэт', gender: 'М', email: '[email protected]' },
{ name: 'Шерри', gender: 'Ж', email: '[email protected]' },
{ name: 'Сэм', gender: 'М', email: '[email protected]' }
]
*/
if (lego.isStar) {
// Билли был бы по-настоящему счастлив, если бы ему удалось провести сразу две вечеринки:
// Яблочную для девушек и картофельную для парней
bestFriends = lego.query(
friends,
lego.select('name'),
// Выбираем всех парней, которые любят картофель, и всех девушек, которые любят яблоки
lego.or(
// Должно сработать хотябы одно условие
lego.and(
// Должны сработать оба условия
lego.filterIn('gender', ['Мужской']),
lego.filterIn('favoriteFruit', ['Картофель'])
),
lego.and(
lego.filterIn('gender', ['Женский']),
lego.filterIn('favoriteFruit', ['Яблоко'])
)
)
);
console.info(bestFriends);
/* Выведет
[
{ name: 'Сэм' },
{ name: 'Эмили' },
{ name: 'Мэт' },
{ name: 'Шерри' },
{ name: 'Стелла' }
]
*/
}