数组求平方

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行代码,到目前的一行代码,可服用也算可以,代码量也少了,学到不少,记下思路过程

原文地址:https://www.cnblogs.com/damai/p/7753452.html