JavaScript学习笔记 04、数组(二)

简介: JavaScript学习笔记 04、数组(二)

三、二维数组


下面是定义二维数组与进行遍历的方式:


<script>
    //定义二维数组
    var arr = [
        [1, 2, 3, 4],
        [5, 6, 7, 8],
        [9, 10, 11, 12],
    ];
    //遍历二维数组
    for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr[i].length; j++) {
            console.log(arr[i][j]);
        }
    }
</script>



四、浅克隆与深克隆


这里的深浅克隆指的是对数组进行克隆。


浅克隆:只克隆数组的第一层,如果是多维数组,或者数组中的项是其他引用类型值,则不克隆其他层。

深克隆:克隆数组的所有层,要使用递归技术。

下面这种形式非浅克隆与深克隆:


<script>
    var arr = [1,2,3,4];
    var arr1 = arr; //该方式是在进行赋值引用
</script>



浅克隆


通过使用循环遍历数组并进行push操作的就是浅克隆的方式:


<script>
    var arr = [1, 2, 3, 4];
    var newArr = [];
    //进行浅克隆
    for (let i = 0; i < arr.length; i++) {
        newArr.push(arr[i]);
    }
    console.log(newArr);//Array(4) [ 1, 2, 3, 4 ]
    console.log(arr == newArr);//false
</script>


该种方式若是克隆如这类形式的var arr = [1, 2, 3, [2,2,2,2]];,数组中带有引用类型的使用该方式就仅仅只是克隆了其引用地址,并没有真正克隆其值!



深克隆


针对于如:var arr = [1, 2, 3, [2,2,2,2]];,这类数组进行深克隆应当使用递归的方式进行克隆。


代码如下:


<script>
    //针对于传入的值或数组进行深拷贝返回
    function getNewArr(a) {
        //a为数组情况
        if (Array.isArray(a)) {
            var newArr = [];
            for (let i = 0; i < a.length; i++) {
                if (Array.isArray(a[i])) {
                    //遍历数组进行递归操作
                    newArr.push(getNewArr(a[i]));
                } else {
                    newArr.push(a[i]);
                }
            }
            return newArr;
        }
        //a为基本类型值时直接返回
        return a;
    }
    var arr = [1, 2, 3, [2, 2, 2, 2]];
    var newArr = getNewArr(arr);
    console.log(newArr);//[1, 2, 3, [2, 2, 2, 2]]
    console.log(arr == newArr); //false
    console.log(arr[3] == newArr[3]); //false   | 克隆成功
</script>




五、高级用法


5.1、map方法



map包含映射的含义,最终映射出数组!



5.2、forEach()使用


Javascript数组Array的forEach方法


调用forEach()相当于对数组进行遍历,可编写对应的回调函数:有三个,分别为当前项,当前项索引以及数组本身


<script>
    const  arr = [1,2,3,4];
    arr.forEach((item,index,arr)=>{
        console.log("item,index,arr=>",item,index,arr)
    })
</script>




5.3、some与every用法(简化forEach()版本)


语法介绍:


arr.some((ele)=>{ele.a>12}):一旦数组中有一个ele.a>12,那么就返回true。

arr.every((ele)=>{ele.a>12}):一旦数组中有一个ele.a<=12,那么就返回true。

需求背景:



当选中记录中一旦有一个有效,上面生效按钮不能进行使用;同理选中的中有一个作废作废按钮就不能使用。


//若是使用foreach就会很麻烦进行判断,不推荐
if(arr.length == 1 && arr[0].status!='Active'){
    this.cancelBtnDis = true;
}else if(arr.length == 1 && arr[0].status=='Active'){
    this.activeBtnDis = true;
}else{
    this.cancelBtnDis = false;
    this.activeBtnDis = false;
}
//使用some或any语法,两条搞定,推荐
//判断当前状态是否为有效,activeBtnDis用来控制按钮是否使用
this.activeBtnDis = arr.some(ele=>ele.status == 'Active')  //如果其中有一个ele.status == 'Active'就返回true,否则返回false
this.cancelBtnDis = arr.some(ele=>ele.status != 'Active')



5.4、fill():填充数组


快速填充数组:添加20个对象


Array(20).fill({"name":"changlu","age":18})



注意问题

js在循环遍历数组中删除指定元素踩坑( foreach… for… for…in… )


1、使用arr.filter((ele)=>return xxx):过滤得到符合条件的所有元素。


let arr2 = [1,2,3]
//调用filter方法会有返回值数组,该数组则为指定匹配内容,并不会对原始数组做操作,需要注意
arr2 = arr2.filter(ele=>{return ele<=2}) //[ 1, 2 ]


整理者:长路 时间:2021.6.9
status != ‘Active’)
<br/>
---
## 5.4、fill():填充数组
快速填充数组:添加20个对象
```js
Array(20).fill({"name":"changlu","age":18})


[外链图片转存中…(img-a7yeAkuB-1651880225191)]



注意问题

js在循环遍历数组中删除指定元素踩坑( foreach… for… for…in… )


1、使用arr.filter((ele)=>return xxx):过滤得到符合条件的所有元素。


let arr2 = [1,2,3]
//调用filter方法会有返回值数组,该数组则为指定匹配内容,并不会对原始数组做操作,需要注意
arr2 = arr2.filter(ele=>{return ele<=2}) //[ 1, 2 ]


相关文章
|
2月前
|
自然语言处理 前端开发 JavaScript
🛠️ JavaScript数组操作指南:20个精通必备技巧🚀
本文详细介绍了 JavaScript 中的 20 个高效数组操作技巧,涵盖了从基本的添加、移除元素,到数组转换和去重等高级操作。强调了不可变性的重要性,提供了清晰的代码示例,帮助开发者编写更整洁和高效的代码。无论是新手还是经验丰富的开发者,这些技巧都将显著提升您的编码能力,使您在项目中更具竞争力。
39 2
|
2月前
|
JavaScript 前端开发 测试技术
JS都有哪些操作数组的方法
JS都有哪些操作数组的方法
29 3
|
2月前
|
JavaScript
js删除数组中已知下标的元素
js删除数组中已知下标的元素
45 4
|
2月前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
49 1
|
2月前
|
JavaScript 前端开发 Java
【javaScript数组,函数】的基础知识点
【javaScript数组,函数】的基础知识点
28 5
|
2月前
|
JavaScript 前端开发 索引
探索JavaScript数组:基础
探索JavaScript数组:基础
20 3
|
2月前
|
JavaScript 前端开发 索引
JS 删除数组元素( 5种方法 )
JS 删除数组元素( 5种方法 )
64 1
|
2月前
|
JavaScript 前端开发
如何在JS中声明一个数组
如何在JS中声明一个数组
30 0
|
2月前
|
存储 JavaScript 前端开发
JavaScript Array(数组) 对象
JavaScript Array(数组) 对象
29 3
|
3月前
|
JavaScript 前端开发 API
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
下一篇
DataWorks