一站式搞定Javascript(三)一篇教会你用数组与对象

数组

数组的创建

简单来说,数组的特征是[ ]包起来的形式
数组可以为,例如:

var arr = [];//创建一个空数组

数组中的数据可以使任意数据类型,用逗号分割,我们把数组中的数据称为元素

数组的下标

通过数组索引可以获取数组中的单个元素,获取的形式为:数组名[索引(也称为下标)] 索引是从0开始。

var arr1 = [1,"hhh",true,[]]
console.log(arr1[1])//结果为hhh

遍历数组

For循环遍历数组

遍历数组通过数组中存在一个length属性,可以取到数组元素的个数。我们还是用刚刚上面的那个数组:

var arr1 = [1,"hhh",true,[]]
console.log(arr1.length)
for(var i = 0; i < arr1.length;i++){
     console.log(arr1[i])
 }
 

运行结果:
在这里插入图片描述
可以看见,我们数组中有4个元素,所以length为4;而我们的i在这里是当作数组下标的遍历,因为数组下标是从0开始的,我们从0累加到3,每一次都打印一遍我们新累加得到的数组下标对应的元素。

补充知识:关于for循环
形式 :for (初始化; 条件表达式; 迭代表达式) {
循环体(要重复执行的代码) }
1.初始化:在循环开始之前执行一次,用于设置循环控制变量的初始值。
2.条件表达式:每次循环开始前都会检查此条件,如果为真(true),则执行循环体;如果为假(false),则循环结束。
3.迭代表达式:在每次循环体执行完毕后执行,通常用于更新循环控制变量。
4.循环体:需要重复执行的代码块。

forEach遍历数组

如果想要同时遍历到数组的下标、数组对于元素的值、以及当前所在数组的话,你可以尝试一下forEach。JavaScript中的forEach方法是一种遍历数组元素的便捷方式,它是为数组中的每个元素执行一次提供的函数。

forEach基础用法:
forEach有三个基本参数:
第一个参数就代表数组中的每一个元素的值(必选)
第二参数就代表数组每一个元素下标(可选)
第三个参数就代表被遍历的数组(可选)

     var arr1 = [1,"hhh",true,[]]
        arr1.forEach(function(value,index,arr){
            console.log(value,index,arr)
        })

执行结果:
在这里插入图片描述

练习

愿意动脑筋的,来写个简单的小练习:
使用forEach或者for,来求数组 [2,6,1,77,52,25,7,99]中的最大值返回。
答案放上面可以自己对照

     // 求数组 [2,6,1,77,52,25,7,99]中的最大值返回
        var arr = [2,6,1,77,52,25,7,99]
        function getMax(qwe){
            //方法一
            // var max = qwe[0];
            // for(var i = 1 ; i < qwe.length;i++){
            //     if(qwe[i] > max){
            //         max = qwe[i]
            //     }
            // }
            // console.log(max)
            // return max
            //方法二
            var max = qwe[0];
            qwe.forEach(function(v,i,a){
                if(v > max){
                    max = v
                }
            });
            console.log(max)

        }
        console.log(getMax(arr))

数组下标的灵活使用(增删改查)

增、改

单个增
  var arr = [];
        arr[0] = 1;
        arr[1] = 2;
        arr[2] = 3;
        arr[arr.length] = 1;
        console.log(arr.length)

结果:在这里插入图片描述

循环增
var arr = [];
for(var i = 1 ; i <= 5 ;i++){
   arr[arr.length] = i;
 }
console.log(arr)

结果:在这里插入图片描述

直接通过length增
 var arr = [];
        arr.length = 8;
        console.log(arr)
        console.log(arr.length)//可读可改属性,当数组没有具体内容时会被empty填充

结果:在这里插入图片描述

直接通过数组下标改:

arr[4] = 123;

使用 delete 操作符删除数组中的元素后,arr2 中索引为 2 的元素(值为 3)被删除,但数组的长度不会改变,被删除的位置会被替换undefined

arr2.length -= 1,数组的长度减少了 1。这意味着数组的最后一个元素(之前的 5)现在被“移除”了。这个操作并不移动数组中的元素来填补被删除元素留下的空位,而是直接缩短数组,可能导致数组末尾出现未定义的空洞。

    var arr2 = [1,2,3,4,5]
    delete arr2[2];
    console.log(arr2)
    console.log(arr2[2])
    arr2.length -= 1;
    console.log(arr2)

结果:
在这里插入图片描述

console.log(arr2[3])

数组的API(方法):

利用数组的方法,我们可以对数组进行更灵活的增删改查。
push(newData1,newData2....) 在数组末尾添加元素
pop() 在数组末尾删除一个元素
shift() 在数组开头删除一个元素
unshift(newData1,newData2.....) 在数组开头添加
indexOf() 查找数组中是否存在一个元素,找得到返回元素下标,找不到返回-1
splice(index,num,tihuan) 从数组的index位置开始删除num个,替换可写可不写,写的话就是把刚刚删除的元素位置替换成新的数据

简单运用:

        var arr = [22,33,44,55,66]
        arr.push(99,88)
        console.log(arr)
        arr.unshift(0,11)
        console.log(arr)
        arr.pop()
        console.log(arr)
        arr.shift()
        console.log(arr)
        var arr1 = [1,2,3,4];
        arr1.splice(2,2,"laila")
        console.log(arr1)
        

结果:在这里插入图片描述

练习一:把数组[2,0,6,1,77,0,52,0,25,7]中大于10的元素组成一个新的数组

        var arr3 = [2,0,6,1,77,0,52,0,25,7]
        function fun(poi){
            var newArr = [];
            for(var i = 0 ; i < poi.length ; i++){
                if(poi[i] > 10){
                    newArr.push(poi[i])
                }
            }
            return newArr;
        }
        console.log(fun(arr3))

练习二:将数组arr3翻转到新数组中方法

      var arr3 = [2,0,6,1,77,0,52,0,25,7]
      var newArr2 = []
        for(var i = arr3.length - 1 ; i >= 0 ; i--){
            // newArr2.push(arr3[i])
            newArr2[newArr2.length] = arr3[i]
        }
        for(var i = 0 ; i < arr3.length ; i++){
            newArr2.unshift(arr3[i])
        }
        console.log(newArr2)

练习三:对arr4数组去重

        var arr4 = [12,25,66,98,77,1,12,36,88,66];
        var newArr = []
        for(var i = 0;i < arr4.length;i++){
            if( newArr.indexOf(arr4[i]) == -1 ){
                newArr.push(arr4[i])
            }
        }
        console.log(newArr)
        console.log(arr4.indexOf(11))
        console.log(arr4.indexOf(77))

对象

创建 对象

//创建空对象
var obj = {}
//创建一般对象:
        var obj = {
            // 属性名 : 属性值
            name : "小翠",
            age : 18,
            sex : true,
            hobby : ["打王者","打金铲铲","唱歌"],
            money : {
                jianhang : 1,
                zhaohang : 9999999999
            },
            // 方法名 : 方法值
            say : function(aaa){
                console.log("哈喽"+aaa)
            },
             // 数字作为键名,合法但访问时需要注意
            0 : 123
        }
        console.log(obj)

结果:在这里插入图片描述
注意:1.使用数字作为键名,合法但访问时需要注意
2.对象没有length属性

如果直接访问

console.log(obj.0); // 这是错误的,会引发语法错误

会报错,正确用法:

console.log(obj[0]);

结果:在这里插入图片描述

对象的循环方法 for in

还是用上面创建好的obj

 for(var key in obj){
            console.log(key)//对象的属性名
            console.log(obj[key])
        }

结果:在这里插入图片描述

对象名.属性名/方法名 对象名[‘属性名’]/[“方法名”]

     	console.log(obj.hobby)//方法1
        console.log(obj["hobby"])//方法2
        console.log(obj.hobby[2])
        obj.say("world")

结果:在这里插入图片描述

delete 对象名.属性名/方法名

     delete obj.money.zhaohang
        console.log(obj)

结果:在这里插入图片描述

对象名.属性名/方法名 = 属性值/方法

        obj.guoji = "中国";
        obj.sing = function(){
            console.log("我和我的祖国,一刻也不能分割")
        }
        console.log(obj)

结果:
在这里插入图片描述

原创不易,转载请标注原文链接!!!

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值