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行代碼,到目前的一行代碼,可服用也算可以,代碼量也少了,學到不少,記下思路過程