let arr = [1,2,3,4,5]; //返回该数组的平方,不要修改原数组 [1,4,9,16,25]
数组的方法中不修改原数组的方法目前知道就是有四种
map,concat,slice,filter
//不知道的可以查看api
原始写的
1 求平方肯定使用Math.pow 2 //这里介绍Math.pow的方法含义 3 4 平方求的是就是该数值的几次幂。用这个函数正好。 5 6 //Math.pow(base, exponent) 7 8 返回base的exponent的平方 9 Math.pow(2, 2) //返回2的2 次幂,4
个人写的low代码
1 var arr1 = [1, 2, 3, 4]; 2 3 function square(arr) { 4 let newArr = arr.slice(0); 5 let num = []; 6 newArr.forEach(item => { 7 num.push(Math.pow(item, 2)) 8 }) 9 return num; 10 } 11 square(arr1)
map不是有三个参数吗?用自己乘以自己不就等于平方了吗?修改之后的代码
1 function square(arr) { 2 return arr.map((item, index, arrList) => { 3 return item * item 4 }) 5 } 6 7 //因为map不会修改原数组返回值直接runturn出来,但是里面的计算如果没有return的话返回undefined, 8 //runturn如果是个函数表达式,那么结果也要runtun出来
如果以后不算2平方了咋办,还是用Math.pow,在此修改之后的代码
1 function square(arr) { 2 return arr.map((item, index, arrList) => { 3 return Math.pow(item, 2) 4 }) 5 }
两个return看着有点难受,修改一下,而且要的计算功能,位置(index),跟原数组(arrList),可以不用,这些都是可选参数。修改如下
1 function square(arr) { 2 return arr.map(item => Math.pow(item, 2)) 3 }
es6的写法,5行代码,到目前的一行代码,可服用也算可以,代码量也少了,学到不少,记下思路过程