对象和数组

Posted 52580587zl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象和数组相关的知识,希望对你有一定的参考价值。

面向对象

类:定义属性和方法

对象:类的具体实现,继承了类所定义的属性和方法(是一种数据类型)

类是对象的抽象,对象是类的实例。

创建对象的方式:

第一种:字面量方式创建对象(常用)

        键值对---key:value

        键和值之间用冒号(:)分割,多个键值对之间用逗号(,)分割

       例:var  guoer = { name:‘yangguo’ , age:30 }

   第二种:

        通过new运算符创建对象,Object注意首字母大写

           例:var gouer = new Object()

        给guoer这个对象新增一个name属性,赋值为yangguo

              guoer.name = ‘yangguo ’  

调用对象的方式:

       对象名.属性名

       对象名.方法名()

遍历:一个一个的查看

   对象遍历:for……in

根据对象的键值对来循环,对象里有多少个键值对for就会循环多少次。

每一次循环得到的key就是当前键(属性名或方法名)

      例:for(var key in guoer){console.log(key)

console.log(guoer.key)//undefined}

    需要根据key变量先取到值,在用变量的值去对象里取

对象名[变量名]这里的变量里存的是对象的属性名

中括号里属性名要加引号,固定写法

例:console.log(guoer[key])

如果我们确切的知道属性名是什么,那么就直接对象名.属性名

如果属性名是存在一个变量里的,这个时候需要 对象名[变量名]

数组Array:一组数据,用一个变量来存储一组数据

如果要访问数组元素,可以通过索引(下标),都是从0开始。

获取数组长度用length属性

       例:console.log(arr[1])

           console.log(arr.length)

 

  1. 1.  字面量的方式声明数组

var arr = [3,4,5,6,7 ]

   2.new运算符声明数组,传多个参数,这些参数就都是数组的值

       var arr1 = new Array(4,5,6,7,8,)

3.new运算符声明数组,实参只传递一个,这一个实参是数组长度

例:var arr2 = new Array(3)

    console.log(arr2)

arr2长度为3,但是3个值都是空的

给arr2赋值可以通过下标

    arr2[0] = 6  //给第0个元素赋值为6

    arr2[1] = 7  //给第1个元素赋值为7

js是松散型语言,

如果数组元素超过本来的长度了,那么自动把length加上去,

    arr2[2] = 6

arr2[3] = 6

直接给arr[6]也是可以的中间没有给值的就是空,长度为7

arr2[6] = 10

一般如果数组固定了长度就不要像这种写法去改变,因为不严谨

数组数据存放类型:可以放不同类型数据

       数组的length属性是动态获取的,不是固定值

       数组的索引值返回0---arr.length-1

       如果我们要取数组的最后一个元素  console.log(arr[arr.length-1])

       在数组末尾追加一个元素   arr[arr.length] = 元素

二维数组:

例:var arr = [ [1,2,3],[4,5,6],[7,8,9]]

       console.log(arr.length)  //  3

       console.log(arr[0])    //[1,2,3]

   console.log(arr[0][0]) //取数组中的1

   console.log(arr[1][2]) //取数组中的6

   不论取哪个数都需要一个个数,整体的行和列

稀疏数组:数组中的某些元素是没有值的,空值是empty

      例:var arr = [1,,,4,,5,6,,7]  多加几个逗号

数组遍历:

for循环,在遍历数组时遇到空元素会输出undefined(最常用的)

      例:var arr = [3,4,5,7,9]

           for(var i = 0;i < arr.length; i++){}

for…in(ES5),在遍历数组时,跳过空元素

     例:for (var index in arr){console.log(index,arr[index])}

     index是数组的索引,他是字符串类型,但并不影响取数据

       for...of(ES6),不取下标直接取值,在遇到空值是,输出undefined

         即稀疏数组中的undefined也会被遍历出来

         例:for (var value of arr){console.log(value)}

数组是引用类型

对象和函数都是引用类型,内存里存的是引用(地址)

引用传递和值传递

基本数据类型(值传递):number、string、boolean、undefined、null

引用数据类型(引用传递):object(array也属于object)、function

    例:

 

数组常见的API(直接拿来对数组进行调用)

 

1、concat() 数组合并,并不会修改原数组,而是得到新数组

可以合并多个数组

例:var  arr2=  arr.concat(arr1)//把arr和arr1合并到一起

2、join()将数组拼接成字符串,

括号中的值是连接符,指定字符

例: var str = arr.join()

3、pop()在数组末尾删除最后一个元素,修改的是数组本身

返回值是被删掉的那个元素。

4、push()在数组末尾增加元素,修改的是数组本身。

可以追加多个值,返回值是新的长度

5、shift()在开头删除最后一个元素,修改的是数组本身

返回值是被删掉的那个元素。

6、unshift()在开头添加元素 修改的是数组本身。

可以追加多个值,返回值是新的长度

  7、reverse()数组元素的翻转,将数组从后往前重排。

      修改的是原数组

  8、slice()可以按照指定的索引去返回内容

      arr当中按照指定的索引截取子数组,索引含头不含尾,不会修改原数组,而是返回一个新数组

      例:var arr3 = arr.slice(1,3)//截取的索引1和2 不含3

   var arr4 = arr.slice(2)//只传一个参数,意思是截取到末尾

   var arr5 = arr.slice(-2,-1)//传负数,负数代表倒数第几个

以上是关于对象和数组的主要内容,如果未能解决你的问题,请参考以下文章

vue数组和对象响应式杂谈

C++C++自学旅程:对象数组和对象指针

遍历具有深层嵌套对象和数组的对象数组

js操作对象和数组对象 取key/value

markdown 数组,对象和类数组对象

创建一个对象数组,数组的元素是学生对象,学生的信息包括学号,姓名,和成绩,在main