Skip to content

Commit 6590054

Browse files
committed
Add compact and difference functions
1 parent cc9e428 commit 6590054

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
function compact1(arr){
2+
return arr.filter(Boolean)
3+
}
4+
5+
function compact2(arr){
6+
let compactArr = [];
7+
8+
for (let i = 0; i < arr.length; i++) {
9+
if(arr[i]) {
10+
compactArr.push(arr[i]);
11+
}
12+
}
13+
14+
return compactArr;
15+
}
16+
17+
const arr1 =[1, 'hi', false, 0, 'a', null, undefined, NaN, {}, [], () => {}, ''];
18+
console.log(compact1(arr1));
19+
console.log(compact2(arr1));
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
function difference1(arr1, arr2){
2+
if(arr1.length === 0) return [];
3+
if(arr2.length === 0) return arr1;
4+
5+
return arr1.filter(val => !arr2.includes(val));
6+
}
7+
8+
function difference2(arr1, arr2){
9+
if(arr1.length === 0) return [];
10+
if(arr2.length === 0) return arr1;
11+
12+
const excludeSet = new Set(arr2);
13+
14+
return arr1.filter(val => !excludeSet.has(val));
15+
}
16+
17+
function difference3(arr1, arr2){
18+
if(arr1.length === 0) return [];
19+
if(arr2.length === 0) return arr1;
20+
21+
const excludeSet = new Set(arr2);
22+
let result = [];
23+
24+
for (let i = 0; i < arr1.length; i++) {
25+
const value = arr1[i];
26+
if(!excludeSet.has(value) && ! (value === undefined && !(i in arr1))) {
27+
result.push(arr1[i]);
28+
}
29+
}
30+
31+
return result;
32+
}
33+
34+
const arr1 = [1, 2, 2, 3, 2], arr2 = [2];
35+
const arr3 = [1, 2, 3], arr4 = [];
36+
const arr5 = [], arr6 = [];
37+
console.log(difference1(arr1, arr2));
38+
console.log(difference2(arr1, arr2));
39+
console.log(difference3(arr1, arr2));
40+
console.log(difference1(arr3, arr4));
41+
console.log(difference1(arr5, arr6));

0 commit comments

Comments
 (0)