20170711_map/reduce

时间:2021-05-15 14:33:01

js:

map:

var arr = [1,2,3,4,5];

var res = arr.map(function(x){

  return x * x;

});

//res 现在 = [1,4,9,16,25];

这种写法等同于下面一种写法

function f(x){

  return x * x;

}

var res = arr.map(f);

//这里会直接调用f方法,也可以条用js内置的别的方法如String,使arr里的数字变成字符串。

reduce:

var arr = [1,2,3,4,5];

var res = arr.reduce(function(x,y){

  return x * y;

});

//res现在 = (((1*2)*3)*4)*5; 120

php:

$arr = array(1,2,3,4,5);

map:

$mapres = array_map(function($x){

  return $x * $x;

},$arr);

//$mapres = array(1,4,9,16,25);

reduce:

$midkey = 1;//这里的midkey是一个中间值,保存计算结果 如果$midkey没有填写则默认为0

$reduceres = array_reduce(function($x,$y){

  return $x * $y;

},$arr,$midkey);

//$resuceres = (1*2*3*4*5); 120

php同样可以使用js那样的第二种方式

map:

function f($x){

  return $x * $x;

}

$mapres = array_map('f',$arr);//和上面那个map相同

map('function name',array)  第一个参数是函数名 第二个是数组

map和reduce应该效率比foreach高吧?