算法题:

https://leetcode-cn.com/problems/add-to-array-form-of-integer/
整数的 数组形式 num 是按照从左到右的顺序表示其数字的数组。

例如,对于 num = 1321 ,数组形式是 [1,3,2,1] 。
给定 num ,整数的 数组形式 ,和整数 k ,返回 整数 num + k 的 数组形式 。

  1. var addToArrayForm = function(num, k) {
  2. let flag = 0
  3. let result = []
  4. for(let i = num.length -1; i >= 0; i--) {
  5. let sum = num[i] + k % 10 + flag
  6. k = Math.floor(k / 10)
  7. flag = Math.floor(sum / 10)
  8. result.unshift(sum % 10)
  9. }
  10. while(k) {
  11. let sum = k % 10 + flag
  12. result.unshift(sum % 10)
  13. flag = Math.floor(sum / 10)
  14. k = Math.floor(k / 10)
  15. }
  16. if (flag) {
  17. result.unshift(flag)
  18. }
  19. return result
  20. };

注意:
1、进位
2、k可能大于num的数字

手写题

//1.手写函数柯里化
function curry(func) {
//此处补全
}
function sum(a, b, c) {
return a + b + c;
}

let curriedSum = curry(sum);

alert(curriedSum(1, 2, 3)); // 6, still callable normally
alert(curriedSum(1)(2, 3)); // 6, currying of 1st arg
alert(curriedSum(1)(2)(3)); // 6, full currying

  1. function curry(fn, args) {
  2. let len = fn.length;
  3. args = args || [];
  4. return function(...arg) {
  5. newArgs = args.concat(arg);
  6. if(newArgs.length < len) {
  7. return curry.call(this, fn, newArgs)
  8. } else {
  9. return fn.apply(this, newArgs)
  10. }
  11. }
  12. }