-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.js
34 lines (28 loc) · 930 Bytes
/
utils.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
exports.getAddedRemovedElementsFromArrays = (originalSortedArray, newSortedArray, exception = '') => {
if (newSortedArray[0] === exception) { newSortedArray[0] = 0 }
let addedElements = []
let removedElements = []
let a = 0,
b = 0
while (a < originalSortedArray.length && b < newSortedArray.length) {
if (originalSortedArray[a] < newSortedArray[b]) {
removedElements.push(originalSortedArray[a])
a++
} else if (originalSortedArray[a] > newSortedArray[b]) {
addedElements.push(newSortedArray[b])
b++
} else {
a++
b++
}
}
while (a < originalSortedArray.length) {
removedElements.push(originalSortedArray[a])
a++
}
while (b < newSortedArray.length) {
addedElements.push(newSortedArray[b])
b++
}
return { addedElements, removedElements }
}