[TOC]
# Array对象的方法
## 1.instanceof关键字
*****
判断对象是不是数组类型,是返回值是true,不是返回值是false
```
var arr=[];
console.log(arr instanceof Array);//true
```
<br>
## 2.isArray(对象)
判断这个对象是不是数组,是返回值是true,不是返回值是false
*****
```
console.log(Array.isArray(arr));//结果是true
```
<br>
## 3.push(值1,值2...)
把值往数组**后面添加**,返回值也是**追加数据之后的数组长度**,参数的数据类型不限
```
var arr1=[10,20,30,40,50];
var result = arr1.push(100,200);
console.log(result,arr1);//返回结果:7,[10, 20, 30, 40, 50, 100, 200]
```
<br>
## 4.unshift(值1,值2...)
往数组**前面添加**,返回的是**改变后的数组的长度**参数数据类型不限;
```
var arr2=[10,20,30,40,50];
var result = arr2.unshift(100,200);
console.log(result,arr2);//返回结果:7,[100, 200, 10, 20, 30, 40, 50]
```
<br>
## 5.pop()
删除数组的**最后一项**,参数无 **返回值是删除的那一项**
```
var arr3=[10,20,30,40,50];
var result=arr3.pop();
console.log(result,arr3);//返回结果:50和[10, 20, 30, 40]
```
<br>
## 6.shift()
删除数组的**第一项**,参数无** 返回值是删除的那一项;**
```
var arr4=[10,20,30,40,50];
var result=arr4.shift();
console.log(result,arr4);//返回结果:10和[20, 30, 40, 50]
```
<br>
## 7.indexOf(元素值)
查看某个元素在数组里面的**索引**,如果**没有这个元素返回值是-1**
```
var arr2=[10,20,30,40,50];
var index=arr2.indexOf(30);
console.log(index);//2
```
<br>
## 8.indexOf(n,m)
从索引m开始查看n在数组里面的索引值
<br>
## 9.lastIndexOf()
**查找从后往前找**,但是**索引仍然是从左向右的方式**,**找不到则返回-1**
<br>
## 10.join("字符串")
把**数组**按照指定的字符串**拼接成一个字符串**,如果**没有参数就按默认的逗号**拼接成字符串,如果有参数就按照指定的字符串拼接成字符串
```
var arr2=["小白","小黑","小红","小芳","小绿","小花"];
var str = arr2.join("|");
console.log(str);
//小白|小黑|小红|小芳|小绿|小花
```
<br>
## 11.reverse()
**数组反转** 参数无 **返回值是反转后的数组**,(改变原有数组)
```
var arr3=[10,20,30,40,50];
var temp=arr3.reverse();//反转
console.log(temp,arr3);//[50, 40, 30, 20, 10],[50, 40, 30, 20, 10]
```
<br>
## 12.sort()
数组排序 **返回值是排好序的数组**,改变原有数组。参数可传可不传,如果**传参数**,参数是**回调函数**。如果**不传参数**的时候**只能排10以内的数字**
*****
```
//不传参数的sort()排序----从小到大
var ary=[1,2,3,6,5,4];
var temp=ary.sort();
console.log(temp); //结果:[1, 2, 3, 4, 5, 6]
console.log(ary); //结果:[1, 2, 3, 4, 5, 6]
```
*****
//sort()带有参数的升序和降序
**冒泡排序**
```
//1、从小到大排序 a-b
升序
var ary=[1,2,3,6,5,4,13,12,15,16];
var temp=ary.sort(function (a,b) {
return a-b;//把原数组升序排
});
console.log(temp);//结果:[1, 2, 3, 4, 5, 6, 12, 13, 15, 16]
//2、从大到小排列 b-a
降序
var temp=ary.sort(function (a,b) {
return b-a;
});
console.log(temp);//结果:[16, 15, 13, 12, 6, 5, 4, 3, 2, 1]
```
<br>
## 13.slice(n,m)
从索引n开始获取到索引m(**不包含m**)返回值是**获取到的元素组成的新数组**
```
var ary=[10,20,30,40,50,60,70,80,90,100];
var temp=ary.slice(2,6);
console.log(temp); //结果是[30, 40, 50, 60] 从索引2开始获取到索引6不包括索引6
```
<br>
## 14.splice(n,m,x/y/z...)
把数组从**索引n开始删除m个元素**,用**x,y...替换删除的m项**。返回值是**删除的m项组成的新数组**
```
var ary=[1,2,3,4,5,6];
var temp=ary.splice(1,2,7,8,9,10);
console.log(temp);//返回结果是:[2, 3]这个是删除的项组成的新数组,就是删除了2,3
console.log(ary);//返回结果是:[1, 7, 8, 9, 10, 4, 5, 6]
```
<br>
//当m项是0的时候,它把x,y...替换项放到索引n的前面
```
var ary=[1,2,3,4,5,6];
var temp=ary.splice(1,0,7,8,9,10);
console.log(temp);//[] 返回空数组,因为没有删除
console.log(ary); //结果:[1, 7, 8, 9, 10, 2, 3, 4, 5, 6]
```
//当不写x、y替换项的时候代表删除数组的元素
```
var ary=[1,2,3,4,5];
var temp=ary.splice(1,2);
console.log(temp);//结果:[2, 3]
console.log(ary);//结果:[1, 4, 5]
```
<br>
## 15.splice()
**不传参数**时,代表没有对数组做任何操作,**返回一个空数组**
```
var ary=[1,2,3,4,5];
var temp=ary.splice();
console.log(temp); //结果:[]
console.log(ary);//结果:[1, 2, 3, 4, 5]
```
<br>
**splice(0) **
参数是**0** 的时候,代表**删除整个数组**,**返回的是原数组的数据,原数组变为空数组**
```
var ary=[1,2,3,4,5];
var temp=ary.splice(0);
console.log(temp); //结果: [1, 2, 3, 4, 5]
console.log(ary);//结果:[]原数组变为空数组
```
- Javascript
- 组成
- Web API
- 初步认识DOM
- 经典案例 (使用获取id的方法)
- 节点和元素
- 经典案例 (使用获取节点和元素的方法)
- 函数
- 作用域链
- Array对象的方法
- String对象的方法
- 绑定事件
- 事件委托
- 逻辑运算
- js高级(面向对象、)
- 基本知识
- 数据类型
- 基本包装类型的使用
- 定义变量的区别
- JavaScript对象的动态特性
- 关键字in
- 关键字delete
- 运算符
- 创建对象的方式
- 回调函数
- 高阶函数
- 构造器属性
- this指向
- hasOwnProperty属性
- 私有成员和特权方法
- 面向对象和面向过程的基础
- 异常捕获
- 构造函数和普通函数的区别
- 构造函数的补充
- 原型
- 原型图
- 获取原型对象的方法
- 原型对象的访问和设置
- 判断某个对象是否是指定实例对象的原型对象
- constructor
- isPrototypeOf
- instanceof
- 检测对象是公有还是私有
- 核心概念
- 继承
- 混入式继承
- 原型式继承
- 原型链继承
- 借用构造函数继承(call继承,经典继承)
- 组合式继承(推荐)
- class继承
- __ proto __属性
- call方法和apply方法
- Fuction相关知识
- 创建函数的方式
- eval函数
- 浅拷贝和深拷贝
- 浅拷贝
- 深拷贝
- Object相关知识
- Object原型属性和方法
- Object静态成员对象
- 案例
- 数组去重
- 闭包
- 语法
- DOM事件和闭包
- 定时器和闭包
- 即使对象初始化
- 闭包的变形
- 设计模式
- 单例模式
- 发布订阅模式(观察者模式)
- 工厂模式
- 命名空间模式
- 同步和异步
- 垃圾回收机制
- get和set
- JQuery
- 动画方法
- 事件
- 方法
- 节点
- 方法er
- HTML + CSS
- 经验
- flex布局
- px,em ,rem区别
- 清除浮动
- Less
- UI框架
- 一.Bootstrap框架
- 常用类名
- 二 .Animate.css
- 三.WOW.JS
- 四.scrollReveal.js
- 五.zepto框架
- zepto选择器
- 滑动事件
- tap触摸事件
- zepto动画
- 六,swipe框架
- 分页器
- 左右按钮和循环轮播
- 底部滚动和轮播方向
- 自动播放和切换效果
- 移入移除事件
- swipe结合animate.css
- 总结
- 滚滚屏
- 自动化构建工具
- 1.gulp
- 使用gulp编译less成css,并最终压缩css
- 压缩css
- 合并和压缩js
- 压缩图片
- 编写server服务
- 包管理器
- 介绍
- brew
- npm十全大补汤
- ES6
- class类
- class类的使用
- class类的继承结构
- let 和const
- 结构语法
- 模板字符串
- 化简写法
- 形参的默认值
- ...rest参数
- rest剩余参数
- 扩展参数
- 正则表达式
- 创建正则表达式的方式
- 构造函数
- 字面量的方式
- 其他(修饰符)
- 判断是否匹配成功
- 正则表达式案例
- 常见的匹配原则
- 验证密码长度
- 表单验证
- 正则提取
- 正则替换
- vue
- 插值操作
- Mustache语法
- 过滤器
- 绑定相关知识
- 绑定对象
- 单向绑定
- 双向绑定
- 绑定属性
- 动态绑定style
- 绑定事件
- 补充
- 绑定语法
- 基础
- vue介绍
- MVVM
- 计算属性
- 指令
- v-cloak
- 显示和隐藏
- 循环
- 自定义指令
- 本地缓存
- localStorage
- sessionStorage
- 对象劫持
- 组件
- 局部组件
- 父子组件
- 全局组件
- 组件访问实例数据
- 父传子
- 子传父
- 兄弟传兄弟
- 插槽
- methods,computed,watch的区别
- Vue.observable()
- vue.config.js配置
- 修饰符
- .sync修饰符
- $attrs和$listeners
- Node.js
- 使用Node执行js代码的两种方式
- 交互模式
- 解释js文件
- http模板
- request对象的使用
- express框架
- 安装
- post
- 获取请求参数
- post返回页面
- 重定向到别的接口
- get
- 返回页面
- get获取请求参数
- 请求静态资源
- 热重启
- Ajax
- 请求方式
- get请求
- post请求
- jQuery中的ajax方法
- JQuery中的get请求
- jQuery中的post请求
- 微信小程序
- 认识
- 引入样式的方式
- 绑定数据
- 小程序组件
- scroll - view 可滚动视图区域
- 发起请求
- template模板
- rich-text
- web-view
- open-data
- checkbox组件
- label组件
- radio组件
- picker组件
- swiper组件
- Git
- 跨域
- 左侧固定,右侧自适应
- vuex
- 如何解决vuex页面刷新数据丢失问题
- 数据结构
- 树
- 问题累积
- Axios
- 前端路由