码迷,mamicode.com
首页 > 编程语言 > 详细

柯里化函数、快速排序、外边距重叠

时间:2018-12-05 21:44:12      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:array   function   数通   柯里化   app   index   dex   直接   currying   

柯里化函数
柯里化函数通常也称为部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分函数参数,直至返回最后结果。

例子:
实现carrying函数,完成以下需求,代码如下:
function sum(a,b,c){
return a+b+c;
}
function currying(fn){

     `//todo`(自己编写的代码)

}
var curring = curring(sum);
console.log(currying(sum,1,2,3)) //6
console.log(currying((1),(2),(3)) //6
console.log(currying((1,2),3)) //6
console.log(currying((),(1),(2),(3)) //6
console.log(currying(1,2,3)) //6

var currying = function (fn) {
var _args = [];
return function () {
if (arguments.length === 0) {
return fn.apply(this, _args);
}
Array.prototype.push.apply(_args, [].slice.call(arguments));
return arguments.callee;
}
};

        function sum(a,b,c){
            return a+b+c;
        }

快速排序
大致分三步:

1、找基准(一般是以中间项为基准)

2、遍历数组,小于基准的放在left,大于基准的放在right

3、递归
function quickSort(arr){
//如果数组<=1,则直接返回
if(arr.length<=1){return arr;}
var pivotIndex=Math.floor(arr.length/2);
//找基准,并把基准从原数组删除
var pivot=arr.splice(pivotIndex,1)[0];
//定义左右数组
var left=[];
var right=[];
//比基准小的放在left,比基准大的放在right
for(var i=0;i<arr.length;i++){
if(arr[i]<=pivot){
left.push(arr[i]);
}
else{
right.push(arr[i]);
}
}
//递归
return quickSort(left).concat([pivot],quickSort(right));
}

外边距重叠

外边距重叠失败盒子模型中的一个属性,在css当中,相邻的两个盒子的外边距可以结合成一个单独的外边距,这就是外边距重叠。

柯里化函数、快速排序、外边距重叠

标签:array   function   数通   柯里化   app   index   dex   直接   currying   

原文地址:http://blog.51cto.com/13570197/2326716

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!