对象和数组
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. 字面量的方式声明数组
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)//传负数,负数代表倒数第几个
以上是关于对象和数组的主要内容,如果未能解决你的问题,请参考以下文章