在JavaScript中 object 类型包含的数据有很多,数组、普通对象、DOM节点、内置对象、函数等等都属于obejct
类型
常用的数组
1.为什么要学习数组?
之前学习的数据类型 只能存储一个值 比如: Number/String等 我想存储班级中所有的学生的姓名 此刻我该如何存储?
2.数组的概念
数组的存在概念, 就是将多个元素( 通常是同一类型) 按一定顺序排列放到一个集合中, 那么这个集合我们就称之为数组
3. 数组定义
数组是一个有序的列表,可以在数组中存放任意的数据,并且数组的长度可以动态的调整。
数组的创建方式
-
通过数组字面量创建数组
-
创建空数组
-
let arr =[];
// 在数组 [] 里存放多条数据 每条数据之间用逗号隔开 , let arr = [1, 2, '无限', true]; console.log(arr); // 用Array方法创建 let arr1 = Array("美女", 3, 5); console.log(arr1); // 数组是一个有序的列表,可以在数组中存放任意的数据,并且数组的长度可以动态的调整 let num = [1, 2, 3, 4, 5, 55, 66, 77, 88]; // 可以通过数组的length属性获取数组的长度 console.log(num.length); //现在这个数组的长度为5 其余多出来的全部切掉 num.length = 5; console.log(num); //结果: [1, 2, 3, 4, 5]
4.获取数组元素项
-
格式:数组名[下标] 下标又称索引
-
功能:获取数组对应下标的那个值,如果下标不存在,则返回undefined。
// 获取到这个数组中的 'green' 并且打印出来 let arr=['red','green','blue']; // 取数据 序号是从 0开始 arr[1] console.log(arr[1]); // 这个数组的最大下标为2,因此返回undefined console.log(arr[3]);
5.数组可以取值,也可以修改值或者新增值
// 数组的赋值 let arr1=['哈哈','和','木槿','一起去买菜']; // 把哈哈 修改为 无限 // 给下标为0的数组元素赋值 如果该元素本身有值会进行覆盖 arr1[0] ="无限"; console.log(arr1); // 给下标 4的数组元素 赋值 如果该元素 不存在就新增 arr1[4] ="然后在一起打代码"; console.log(arr1);
6.数组方法
-
push(data):在数组的末尾添加一个或多个元素,多个元素之间使用逗号隔开,返回添加之后的数组长度。
-
pop():移除末尾元素,返回被移除的元素。
-
shift():移除数组的第一个元素,返回被移除的元素。
-
unshift(data):在数组的头部添加一个或多个元素,返回添加之后的数组长度。
-
splice(index,num):从数组中添加/删除项目,返回被删除的项目
-
slice(startNum,endNum) 截取数组:startNum 参数为起始位置(包含), endNum 参数结束位置(不包含)。
-
toString():将数组转换成字符串类型,返回字符串结果。
-
join(param):将数组转换成字符串,可以指定元素之间的连接符,如果参数省略,默认按照逗号连接,返回字符串。
-
reverse():反转数组,倒序重排,返回重排的数组,注意该方法直接修改原数组的结构
-
sort():对数组中元素排序,默认按照Unicode编码升序排列,返回重排后的数组,直接修改原有数组
参数 : 可选,自定义排序算法
// 自定义升序 function sortASC(a,b){ return a-b; }
作用:作为参数传递到sort()中,会自动传入两个元素进行比较,如果a-b>0,交换元素的值,自定义升序排列
// 自定义降序 function sortDESC(a,b){ return b-a; } // 如果返回值>0,交换元素的值,b-a表示降序排列
对象 Object
1.什么是对象?
咱们要说的对象可不是 女朋友 , 在这个世界上 任何具体事物都可以看做
对象
因为他们都有自己的特征、行为
比如: 猫 车子 手机 是对象吗? ( 这些都是一类事物, 只有具体的事物才是对象 , 比如我家的 银渐层小猫。)
/* 银渐层小猫: 名字: 哈哈 品种: 银渐层 年龄: 2岁 最爱: 小鱼干 猫条 鸡胸肉 */ //定义一个obj来接收对象 let obj ={ name: '哈哈', // 数据与数据之间用逗号 ,分开 type: '银渐层', age: '2岁', weight: '10kg', like: ['小鱼干','猫条','鸡胸肉'] } console.log(obj);
2.对象的取值 使用 . 操作符
let girlfriend = { name: '美女', age: 20, phone: 123456 } // 取到对象里属性为age的值 console.log(girlfriend.age);// 打印20 // 使用大括号写法取值 注意: 括号内如果不带引号 会率先识别为 变量 那对象中没有这个变量就报错 console.log(girlfriend['name']); //打印美女
3.修改 对象属性 和 新增对象
// 找到你所要修改的属性 然后通过等号进行 赋值修改 为琪琪 girlfriend.name = '琪琪'; console.log(girlfriend); // 新增 也特别简单 girlfriend.hobby = "喜欢美丽的裙子,爱啃对象"; console.log(girlfriend);
4.使用delete语句来删除对象中的属性
// 删除对象中的属性 delete girlfriend.phone
5.for-in循环是一种特殊循环,可用于循环对象或数组
let obj={ name:'无限', age:18, sex:'男', } //将对象内的所有键值对循环输出, 此时可以使用for-in for(let key in obj){ let text=`当前属性名:${key},值: ${obj[key]}`; console.log(text); }
String(字符串)对象
-
转换字母大小写:
-
toUpperCase() 转大写字母
-
toLowerCase() 转小写字母
-
返回转换后的字符串,不影响原始字符串
-
-
获取字符或字符编码
-
charAt(index): 获取指定下标的字符
-
charCodeAt(index) 获取指定下标的字符编码
-
参数为指定的下标,可以省略,默认为0
-
-
indexOf(str,fromIndex):获取指定字符的下标,从前向后查询,找到即返回
-
str 表示要查找的字符串,必填
-
fromIndex 表示起始下标,默认为0
-
返回指定字符的下标,查找失败返回-1
-
-
截取字符串
-
substring(startIndex,endIndex): startIndex:表示起始下标 ,endIndex:表示结束下标,可以省略,省略表示截止末尾
-
substr(startIndex,len):从指定索引位置截取指定长度的字符串
-
-
split(param):将字符串按照指定的字符进行分割,以数组形式返回分割结果。参数 : 指定分隔符,必须是字符串中存在的字符,如果字符串中不存在,分割失败,仍然返回数组
-
match(regExp/subStr):查找字符串中满足正则格式或满足指定字符串的内容。返回 : 数组,存放查找结果
-
replace(regExp/subStr,newStr):根据正则表达式或字符串查找相关内容并进行替换,替换后的字符串,不影响原始字符串。