今天我们来探讨一下对象和数组
首先我们要明白什么是对象,对象就是存储数据的一个集合(引用数据类型)
对象的创建
字面量方式 var obj = {}
内置构造函数 var obj = new Object()、注意内置构造函数中的Object的O要大写
创建一个有值的对象 注意对象的键值对之间用逗号隔开
name (键名)也叫属性 age(值)也叫属性值
也有叫 key value
var obj1 = {
name : 'jack,
age : 18
}
对象的增删改查(点语法)
增
语法 :对象.属性名 = 属性值
obj.love = 'js'
console.log(obj)
改
语法 :对象.属性名 = 属性值
obj.name = 'rose'
console.log(obj)
查
语法 :对象.属性名
obj.name = 'rose'
console.log(obj.name)
删
语法 :delete 对象.属性名
delete obj.name = 'rose'
console.log(obj.name)
注意删除的是一条属性,而不是把对象清空
中括号语法
增
语法 :对象["属性名"] = 属性值
obj['love'] = js
console.log(obj)
改 语法 :对象["属性名"] = 属性值
obj['love'] = js
console.log(obj)
查
语法 :对象['属性名']
obj['name']
console.log(obj['name'])
删
语法 :delete 对象['属性名']
delete obj['name']
console.log(obj)
遍历对象
var obj = {
name : 'jack',
age : 25
}
for(var k in obj){
console.log k //打印键名
console.log(obj[k]) //打印键名对应的值
}
数组
什么是数组?
存放数据的一个集合(引用数据类型)
创建数组的两种方式
字面量方式创建
var arr = [1,2,3,]
内置构造函数方式
var arr1 = new Array()
数组的 length属性(也就是数组的长度)
var arr = new Array()
console.log(arr.length)//0
var arr1 = new Array(30)
console.log(arr1.length)//empty * 30
var arr2 = [1,2,3,4,5]
console.log(arr2.length)//5
数组索引
一个数据在数组中的哪一个位置,数组索引从0开始
var arr2 = [1,2,3,4,5]
0 1 2 3 4 //对应的索引
遍历数组
var arr2 = [1,2,3,4,5]
for(var i = 0; i < arr.length; i++){
console.log(i)//打印出数组对应的索引
console.log(arr[i])//打印出数组对应的索引对应的值
}
数组常用方法
1. push
语法 数组.push(要插入的数据)
作用: 向数组末尾添加数据
返回值 追加数组后,数组最新长度(leghth)
2.pop
语法 数组.push()
作用: 删除数组最后一条数据
返回值 被删除的数
3.unshift
语法 数组.unshift(要添加的数据)
作用: 向数组开头添加数据
返回值 追加数组后,数组最新长度(leghth)
3.shift
语法 数组.shift()
作用: 删除数组第一条数据
返回值 被删除的数
5.reverse()
语法 数组.reverse()
作用: 翻转数组
返回值 翻转后的数组
6.sort()
语法1. 数组.sort()
语法2. 数组.sort(function(a,b) {return a - b})
//如果有不能转化的数据,就会按照初始的位置排列
//会按照数字大小升序排列
语法3. 数组.sort(function(b,a) {return b - a})
//会按照数字大小降序排列
作用: 不传数据会将数据转化为字符串后一位一位的输出
返回值 排序后的数组
7.splice
语法 数组.splice(开始索引,多少个)
语法 数组.splice(开始索引,多少个,插入数据1,插入数据1...)
作用: 截取数组的部分内容
作用: 截取数组的部分内容,并插入新的数据
返回值 截取出来的部分内容组成的新数组
8.splice
语法 数组.slice(开始索引,结束索引)
作用: 截取数组的部分内容
返回值 截取出来的部分内容组成的新数组
面试题,数组中有两个方法 splice和slice 的区别
spilce会改变数组,slice不会改变数组
介绍两者的区别
9.concat
语法 原始数组.concat(数组1,数组2...,数据1,数据2)
作用: 进行数据拼接,把数组...数据之类的小括号里的内容,拼接到原始数组中
返回值 拼接好的数组
10.join
语法 数组.join(连接符)
作用: 使用连接符,把数组内符每一个数据连接成一个字符串,(不写连接符默认使用的是逗号)
返回值 拼接好的字符串
11.indexof(语法1)
语法 数组.indexof(要检查的数据)
作用: 从前到后,(从左到右)检测该数据第一次在该数组中出现的索引
返回值 找到返回该数据在数组内第一次出现的下标 没有找到返回-1
语法 数组.indexof(要检查的数据,开始索引)开始索引不写默认是0
作用: 在开始索引的位置,按照从左到右的顺序检查该数据第一次在该数组内出现的索引
12.lastindexof
语法 数组.indexof(要检查的数据,开始索引)开始索引不写默认是0
作用: 从后到前,(从右到左)检测该数据第一次在该数组中出现的索引
返回值 找到返回该数据在数组内第一次出现的下标 没有找到返回-1
数组遍历的方法
```js
forEach()
语法 数组.forEach(function (item,index,origin){})
index 数组每一项对应下标
item 数组内每一项的值
origin 原始数组
作用 遍历数组
返回值 没有返回值
map()
语法 数组.map(function (item,index,origin){})
index 数组每一项对应下标
item 数组内每一项的值
origin 原始数组
作用 映射数组
返回值 映射好的数组
查找条件以return 形式出现
find()
语法 数组.find(function (item,index,origin){})
index 数组每一项对应下标
item 数组内每一项的值
origin 原始数组
作用 在数组内寻找满足条件的第一项
返回值 找到的数据 如果没找到返回undefiend
查找条件以return 形式出现
filter()
语法 数组.filter(function (item,index,origin){})
index 数组每一项对应下标
item 数组内每一项的值
origin 原始数组
作用 过滤数组
返回值 返回有个新数组,内部存储的是原始数组过滤出来的部分内容
查找条件以return 形式出现
findIndex()
语法 数组.findIndex(function (item,index,origin){})
index 数组每一项对应下标
item 数组内每一项的值
origin 原始数组
作用 在数组内寻找满足条件的第一项的下标
返回值 找到的数据 如果没找到返回 -1
查找条件以return 形式出现
every()
语法 数组.every(function (item,index,origin){})
index 数组每一项对应下标
item 数组内每一项的值
origin 原始数组
作用 查找数组内的数据是否都满足要求
返回值 一个布尔值 true/ false
查找条件以return 形式出现
some()
语法 数组.some(function (item,index,origin){})
index 数组每一项对应下标
item 数组内每一项的值
origin 原始数组
作用 查找数组内的数据是否有一个满足要求
返回值 一个布尔值 true/ false
查找条件以return 形式出现
reduce()
语法 数组.reduce(function (prev,item,index,origin){})
prev 表示数值或上一次的运算结果
index 数组每一项对应下标
item 数组内每一项的值
origin 原始数组
作用 用来实现叠加效果
返回值 最终的叠加效果
查找条件以return 形式出现