数组
var arr=new array [ ] 一个数时,如果是数值 ,除了正整数 其他都会报错
当下标大于其他长度时,自动扩展数组的长度为当前下标+1
清空数组
arr. length=0数据清空
arr=[ ]//换了新地址
数组:强引用关系
下标变量
//对象的下标如可以隐式转换为数值时,自动转换成下标数值
//如果隐式转换后 非数值时,则作为 对象key插入属性
删除元素
删除对应值变为空,数组长度不会变化
判断是否为数组:Array.isArray(arr);
会改变原始数组的方法
arr.push(4) 这将向arr添加4 返回新length
arr.pop() 删除数组的最后一个元素 返回删除元素
arr.unshift(2,3) 在数组最前加入两项2,3 返回新length
arr.shift() 删除最前面的a 返回删除元素
可见 pop和shift只能删一个 但push unshift能添加多个
splice(开始索引,删除多少个元素[,要插入的元素)] 以数组的形式返回删除的元素
不会改变原始数组的方法
arr.at(下标) 返回在此下标的元素
arr.concat() 将参数依次拼接至原数组的复制品中 其中参数可选元素、数组(数组会展开无论多少层)
slice(start,end) 截取下标从start到end的元素(包前不包后)并以数组形式返回. 默认截取全部
join(‘+’) 返回(由每个元素之间用’+‘连接的)一个字符串. 默认以’,'连接
every(fn(currentValue)[,thisValue=undefined]) 是否每一项都符合条件 返回boolean
some(fn(currentValue)[,thisValue=undefined]) 是否有某一项符合 返回boolean
map(fn(currentValue)[,thisValue=undefined]) 映射 返回(函数处理后的结果)数组
filter(fn(currentValue)[,thisValue=undefined]) 过滤器 返回(符合条件的元素构成的)数组
比如筛选所有已满18岁的成员
forEach(fn(currentValue)[,thisValue=undefined]) 为每个元素执行一次函数,总是返回undefined
用于数组的元素是引用类型时
find(fn(currentValue)[,thisValue=undefined]) 返回第一个符合条件的值,若无返回undefined
令人沉默的操作:a.find((i)=>i==5) 你都知道它=5了。。 那找5的位置呢?用a.findIndex()
findIndex(fn(currentValue)[,thisValue=undefined]) 同上,但返回该值的索引
indexOf(itme[,start]) 找该指定item对应的索引,若无,返回-1
includes(item[,start]) 是否包括item? 返回bool
flat() 扁平化
flat()按照一个可指定的深度来递归遍历数组,并返回(由所有已遍历到的元素组成的)新数组
未设置参数 则全部扁平
flatMap(fn(currentValue)[,thisValue=undefined])
flatMap()首先使用map映射每个元素,然后将结果压缩为一个新数组
reduce(fn(total,currentValue)[,initialValue]) 将数组通过fn缩减为单个值
与其它那几个相比,多了total参数
total用于将这一次(return的值)作为下一次(total值)而被穿入下一次中
并且第二个可选参数为 初始值 (而非thisValue)
初始值允许你来设置(进入第一次fn前total)值
reduce()使得你可以把除了sort外的所有方法用这个方法实现 而且效率更好
抛出异常
(throw new error (“”))
(throw new typeerror (“类型化错误”))
(throw new rangerror (“范围性错误”))
补充
function(顺序:必填参数–>默认值参数–>可选参数 )
必填参数
可选参数
默认值参数
桥接模式
值不确定通过参数传入
条件不固定通过回调函数传入
for of
try{ } catch( ){ }finally{ }
字符串数组互转
**字符串转数组:**字符串名.split(’ ')
**数组转字符串:**数组名.join(‘’)