-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy path3-arrays.js
More file actions
44 lines (35 loc) · 928 Bytes
/
3-arrays.js
File metadata and controls
44 lines (35 loc) · 928 Bytes
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
'use strict';
const union = (s1, s2) => {
const ds = s1.slice(0);
for (let i = 0; i < s2.length; i++) {
const item = s2[i];
if (!ds.includes(item)) ds.push(item);
}
return ds;
};
const intersection = (s1, s2) => {
const ds = [];
for (let i = 0; i < s1.length; i++) {
const item = s1[i];
if (s2.includes(item)) ds.push(item);
}
return ds;
};
const difference = (s1, s2) => {
const ds = [];
for (let i = 0; i < s1.length; i++) {
const item = s1[i];
if (!s2.includes(item)) ds.push(item);
}
return ds;
};
const complement = (s1, s2) => difference(s2, s1);
// Usage
const cities1 = ['Beijing', 'Kiev'];
const cities2 = ['Kiev', 'London', 'Baghdad'];
const operations = [union, intersection, difference, complement];
const results = operations.map((operation) => ({
[operation.name]: operation(cities1, cities2)
}));
console.dir({ cities1, cities2 });
console.dir(results);