数组概述-数组去重-string
数组:
程序 = 数据结构+算法
好的数据结构可以极大的提高程序的执行效率
相关的多个数据应集中存储,集中管理
数组:一组连续的变量组成的集合,统一起一个名字
批量管理多个数据
how:创建 赋值 取值
1、创建:4种1、var 变量名 = [];创建一个空数组
2、var 变量名 = [值1,值2……]创建数组同时为数组指定初始元素
3、var 变量名 = new Array()
new 创建一个新对象(使用new创建的对象都是引用类型对象)
Array js的数组类型
4、var 变量名 = new Array(n) 创建一个n个元素的数组
new Array(值1,值2,值3…)找到数组:找到变量等效于直接使用引用的数组对象
数组对象中每个元素都有一个下标:元素位置号
下标从0开始计算到元素个数-1结束
使用数组中每个元素:
数组变量[i]-获取i位置元素中的值2、赋值:数组变量[i] = 新值;
3、取值:数组变量[i]数组是引用类型对象:
数组名作为变量赋值或参与传递时,都是将地址赋值给对方
对方修改数组内容,原数组名也会受影响null 和 undefined
undefined:所有没有值得变量默认的值,系统自动赋值
null:主动释放一个变量引用的对象;
在使用完较大的对象时,主动是释放总是好习惯垃圾回收机制:专门释放对象内存的一个程序
运行在底层、后台并伴随程序同时运行
引擎自动调用
当对象不再被任何变量引用时,才释放
js数组 VS 其他语言数组
js数组下标越界不会出错
为不存在的位置赋值,不会出错,自动创建指定下标并且赋值新元素
为不存在的位置取值,不会出错也不会增添新元素,返回undefined数组是对象
1、.length属性:获取数组中元素个数 != 实际元素个数3种用法
1、arr[arr.length-1];获取到任意长度数组的最后一元素
2、arr[arr.length] = 新值;向数组末尾追加一个元素
3、改小length长度可以删除末尾元素2、数组遍历:从下标0开始依次取出每个元素,反复执行操作
索引数组:下标从0开始分配,连续不重复的序号下标
3、关联数组:可以去自定义下标的数组创建关联数组:
1、var arr = [];
arr[“name”] = “小明”;
arr[“height”] =180;
arr[“sex”] = “男”;
arr[“old”] =18;
console.log(arr);
关联数字length 失效
关联数组保存的都是键值对 key/value
2、var arr={“name”:”小明”,”height”:180,…..}
二维数组:
var arr = [
[1,0,0,0],
[0,1,0,0],
[0,0,1,0],
[0,0,0,1]
]数组API:
数组去重:
内置对象:由es标准已经定义好的,由浏览器厂商已经实现的对象
11种:String Number Boolean
Array Date Math RegExp
Error
Function Object
Global
String:多个字符串组成的一个只读的集合
数组对象方法 只要是不修改原对象API 字符串都能用
String API
1、转义字符:当字符串的内容和程序的特殊符号冲突时
或字符串中包含功能字符时可以用\转化字符的意义
2、大小写转换:.toUpperCase()将所有字母转大写
.toLowerCase()将所有字母转小写
3、获取指定位置的字符:str.[i];str.chartAt(i);
4、查找关键字:str.indexOf(“关键字”,fromi);
str.lastIndexOf()
var str=”我饿了”;
5、获取子字符串:1、.slice(star,end)
2、.substring(star,end)
3、.substr(star,n)6、分隔字符串:.split(“”)
when:当希望字符串按照规律分隔成数组时
只要分段处理字符串,首先需要先切割再遍历
7、匹配模式:按照规则查找或替换字符串的内容;1、.search()查找
2、获取所有关键字的内容.match()
3、替换
Math:对象封装了数学计算中常用的方法和常用的常量
1、取整:
上取整:Math.ceil()
下取整:Math.floor()
四舍五入取整:Math.round()
2、平方 开平方
Math.pow(n,m)//计算n的m次幂
Math.sqrt(n)//计算n的平方根
3、获得最大值,最小值
Math.max(a,b,c……)
Math.min(a,b,c……)
Math.max.apply(arr)–>Math.max(arr[0],arr[1]….)
4、获取随机数:Math.random()
Date:封装了一个时间点,提供了对时间操作api
封装了从1970年1月1日0点0分0秒至今的毫秒数
创建Date对象