许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  分享题解05:数组元素的平方(数组遍历方法)

分享题解05:数组元素的平方(数组遍历方法)

阅读数 11
点赞 0
article_banner
描述

为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组

示例

输入:[1, 2, 3, 4]

   输出:[1, 4, 9, 16]

代码 输入:
var arr = [1, 2, 3, 4, 5];
console.log(square(arr));
解法一:for遍历

这种方法对于有一定语言基础的人,可能是最容易想到的了,思路比较简单,直白。

第一种: for 遍历
function square(arr) {
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        newArr.push(arr[i] * arr[i]);
            newArr[i] = Math.pow(arr[i],2);
    }
    return newArr;
}
解法二:利用 map 遍历
// 第二种:map 遍历
function square(arr) {
    return arr.map(e => e*e)
}
解法三:利用 for Each遍历
// 第三种:forEach
function square(arr) {
    var newArr = [];
    arr.forEach(element => {
        return newArr.push(element*element)
    });
    return newArr;
}
解法四:利用 for in 遍历
// 第四种: for in
function square(arr) {
    var newArr = [];
    for(let i in arr){
        newArr.push(arr[i] * arr[i])
    };
    return newArr;
}
解法四:利用 for of 遍历
// 第五种: for of
function square(arr) {
    var newArr = [];
    for(let i of arr){
        newArr.push(arr[i] * arr[i])
    };
    return newArr;      
}

// 输出结果为:[ 4, 9, 16, 25, NaN ]

我接着就打印了数组长度以及循环 i ,

function square(arr) {
    var newArr = [];
    console.log(arr.length);  // 5
    for(let i of arr){
        console.log(i);       // 1 2 3 4 5
        newArr.push(arr[i] * arr[i])
    };
    return newArr;
}

问题就显而易见了, 的循环是从 1 开始,我们需要的是从 0 开始的, 改进 方式:将  改写为

function square(arr) {
    var newArr = [];
    for(let i of arr){
        newArr.push(arr[i-1] * arr[i-1])
    };
    return newArr;      
}
// 结果正确
总结
  • 之前又一遍博客也讲述了循环的方式,提及了 inof 的区别,但是理解的比较简单,也没有仔细比较他们的差别,今天这个题目对遍历有一个较为不错的对比 。
  • 关于 inof的用法,还是推荐对于数组(类数组)使用 in,对于对象使用 of,这么做也是根据他们索引值的起始值不同进行的区分。
  • 想到了之前的一个面试题: inof 的区别,当时解答说的是没啥区别,现在看来或许答案就在此处。

以上分享是我个人所学心得,仅供参考;

   不当之处,欢迎大家指点、交流。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空