Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
solutions

.DS_Store
node_modules/
dist/
162 changes: 162 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,9 @@
"exec": "node scripts/exec-script.js"
},
"author": "ming",
"license": "ISC"
}
"license": "ISC",
"dependencies": {
"node-fetch": "^3.3.2",
"typescript": "^5.1.6"
}
}
5 changes: 3 additions & 2 deletions problems/p1-data-types/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,13 @@ function swap(a, b) {
var tmp = a;
a = b;
b = tmp;
return {a, b}
}

var x = 10;
var y = 20;
swap(x, y);
console.log(x, y);
const vv = swap(x, y);
console.log(vv.a, vv.b);

console.log('\n');

Expand Down
130 changes: 129 additions & 1 deletion problems/p2-build-in-objects/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,134 @@ console.log('quiz: ');
// { source: 3, target: 4 },
// { source: 4, target: 5 },
// ];
const array = [0, 1, 2, 3, 4, 5].reduce((result) => result, []);
const array = [0, 1, 2, 3, 4, 5].reduce((result, item, index, arr) => {
console.log(result, item, index);
if (index < arr.length - 1) {
result.push({ source: index, target: index + 1 });
console.log(result)
}
return result;
}, []);





// const array = [0, 1, 2, 3, 4, 5].reduce((result, item, index, arr) => {
// if (index < arr.length - 1) {
// console.log(arr[0]);
// result.push({ source: item, target: arr[item + 1] });
// }
// return result;
// }, []);

console.log('array: ', array);

// const array2 = [0, 1, 2, 3, 4, 5].filter((item, index, arr) => {

// return item % 2 == 0
// })

// console.log('array2: ', array2);

// const arr = [1, 2, 3, 4, 5];
// const reduceArrNoInitValue = arr.reduce((accumulator, currentValue) => {
// console.log(accumulator, currentValue);
// return accumulator + currentValue
// });
// console.log('reduceArrNoInitValue: ', reduceArrNoInitValue);


// const reduceArrInitValue = arr.reduce((accumulator, currentValue) => {
// console.log(accumulator, currentValue);
// return accumulator + currentValue
// }, 0);
// console.log('redureduceArrInitValueceArr: ', reduceArrInitValue);

// const arrMerge = [['a', 'b'], ['c', 'd'], ['e', 'f']];

// const mergedArr = arrMerge.reduce((accumulator, currentValue) => {
// console.log(accumulator, currentValue);
// return accumulator.concat(currentValue)
// })

// console.log('mergedArr: ', mergedArr);

// const arrCount = ['a', 'a', 'b', 'c', 'c', 'c', 'e'];
// const reduceArr = arrCount.reduce((accumulator, currentValue) => {
// console.log(accumulator, currentValue);
// if (accumulator[currentValue]) {
// console.log('before', accumulator[currentValue]);
// accumulator[currentValue]++;
// console.log('after', accumulator[currentValue]);
// } else {
// accumulator[currentValue] = 1;
// }
// return accumulator;
// }, {});
// console.log(reduceArr); // { a: 2, b: 1, c: 3, e: 1 }

// const average = arr => arr.reduce((p, c) => p + c, 0) / arr.length;
// const calArray = [115, 26, 99]
// const calArr = calArray.reduce((accumulator, currentValue, index, arr) => {
// console.log(accumulator, currentValue, index, arr);
// // implement reduce function to calculate min, max, average
// const result = { max: Math.max(...arr), min: Math.min(...arr), average: average(currentValue, arr) }
// console.log(result)
// return result
// }, {})
// console.log(calArr);


const numbers = [1, 2, 3, 4, 5];

const result = numbers.reduce((acc, curr, index, array) => {
// Calculate the maximum
acc.max = Math.max(acc.max || curr, curr);

// Calculate the minimum
acc.min = Math.min(acc.min || curr, curr);

// Calculate the sum
acc.sum = (acc.sum || 0) + curr;


// Calculate the average
// only when last element is reached, then we can calculate the average
if (index === array.length - 1) {
acc.average = acc.sum / array.length;
}
// console.log(acc)
return acc;
});

console.log(result);



// const numbers = [1, 2, 3, 4, 5];

// const result = numbers.reduce((acc, curr, index, array) => {
// if (index === 0) {
// // set init value
// acc.max = curr;
// acc.min = curr;
// acc.sum = curr;
// } else {
// // Calculate the maximum
// acc.max = Math.max(acc.max, curr);

// // Calculate the minimum
// acc.min = Math.min(acc.min, curr);

// // Calculate the sum
// acc.sum += curr;
// }
// // Calculate the average
// if (index === array.length - 1) {
// acc.average = acc.sum / array.length;
// }
// return acc;
// }, {});

// console.log(result);
41 changes: 29 additions & 12 deletions problems/p3-function/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,15 @@ const arr = [1, 2, 3].map((item) => item * 2);
*/
function customMap(array, callback) {
const newArray = [];
for (let i = 0; i < array.length; i++) {
newArray.push(callback(array[i]));
}
return newArray;
}

const newArr = customMap([1, 2, 3], (item) => item * 2);
const newArr = customMap([1, 2, 3], (item) => {
return item * 2
});

console.log('arr: ', arr);
console.log('newArr: ', newArr);
Expand All @@ -52,17 +57,29 @@ function returnFunction() {
};
};

const curryFunc = (args) => (callback) => {
return callback(args[0], args[1]);
const curryFunc = (args) => {
return (callback) => {
return callback(args[0], args[1]);
}
};

const curriedFunc = curryFunc([1, 2]);
let plus;
let minus;
let multiply;
let divide;

console.log('plus: ', plus);
console.log('minus: ', minus);
console.log('multiply: ', multiply);
console.log('divide: ', divide);
let plus = (a, b) => {
return a+b
};
let minus = (a,b) => {
return a-b
};
let multiply = (a, b) => {
return a*b
};
let divide = (a,b) => {
return a/b
};

console.log('plus: ', curryFunc([1,2])(plus));
console.log('minus: ', curryFunc([1,2])(minus));
console.log('multiply: ', curryFunc([1,2])(multiply));
console.log('divide: ', curryFunc([1,2])(divide));


Loading