[TOC]
# 构造
## 构造器
~~~
1、var list=new Array();
2、var list=new Array(size);
3、var list=new Array(element0,element1,...elementn);
~~~
## 字面量方式
~~~
var Array[element0,element1,...elementn];
~~~
~~~
var list[1,true,null,undefined,{x:1},[1,2,3]];
~~~
# 数组对象属性
|属性 | 作用 |
|---------|-------------|
|length 属性 | 表示数组的长度,即其中元素的个数|
| prototype 属性 |返回对象类型原型的引用|
| constructor 属性 |表示创建对象的函数|
## length 属性
通过一些操作来讲解length属性
`var arr=[1,2,3,4,5,6,7,8,9,10];`//定义了一个包含10个数字的数组。
数组的长度属性是可变的
~~~
alert(arr.length); //显示数组的长度10
arr.length=15; //增大数组的长度,length属性是可变的
alert(arr.length); //显示数组的长度已经变为15
~~~
## prototype 属性
`prototype` 属性返回对象类型原型的引用。`prototype` 属性是`object`共有的。
`objectName.prototype`
`objectName` 参数是`object`对象的名称。
说明:用 prototype 属性提供对象的类的一组基本功能。 对象的新实例“继承”赋予该对象原型的操作。
对于数组对象,用以下例子说明prototype 属性的用途。
给数组对象添加返回数组中最大元素值的方法。要完成这一点,声明一个函数,将它加入 Array.prototype, 并使用它。
~~~
function array_max( )
{
var i, max = this[0];
for (i = 1; i < this.length; i++)
{
if (max < this[i])
max = this[i];
}
return max;
}
Array.prototype.max = array_max;
var x = new Array(1, 2, 3, 4, 5, 6);
var y = x.max( );
~~~
该代码执行后,y 保存数组 x 中的最大值,或说 6。
## constructor 属性
`constructor` 属性表示创建对象的函数。
`object.constructor //object`是对象或函数的名称。
说明:`constructor` 属性是所有具有`prototype` 的对象的成员。它们包括除 `Global` 和 `Math`对象以外的所有`JScript`固有对象。`constructor`属性保存了对构造特定对象实例的函数的引用。
~~~
x = new String("Hi");
if (x.constructor == String) // 进行处理(条件为真)。
//或
function MyFunc {
// 函数体。
}
y = new MyFunc;
if (y.constructor == MyFunc) // 进行处理(条件为真)。
~~~
# 对象方法
说明:部分是ECMAScript5的新特性(IE678不支持)
|方法 | 作用 |
| --------- |-------------|
|concat() | 连接两个或者更多的数组,并返回结果|
|join() | 将数组的元素组起一个字符串|
|pop() | 删除并返回数组的最后一个元素|
|push() | 数组末尾添加一个或者多个元素,返回新的长度|
|reverse|颠倒数组中元素的顺序|
|shift()|删除并返回数组的第一个元素|
|slice()|从某个已有的数组返回选定的元素|
|sort()|对数组元素排序|
|splice() | 删除元素,并向数组添加新元素|
|toSource() | 返回该对象的源代码|
|toString()|把数组转化为字符串并返回结果|
|toLocalString()|把数组转化为本地元素并返回结果|
|unshift|向数组开头添加一个或者更多的元素,并返回新的长度|
|valueof()|返回数组对象的原始值|
|forEach()|遍历数组对象|
|map()|对数组做一些映射|
|filter()|过滤|
|every()|检查判断|
|some()|检查判断|
|reduce()|两两执行一定的操作|
|reduceRight()|从右到左执行操作|
|indexOf()|数组检索查找某个元素|
|Array.isArray(\[\])|判断是否是数组|
## concat
concat作用是拼接数组,需要注意的是也可以把一个数组元素作为拼接的元素,如果这样的话,数组会被拉平,再和其它的元素拼接起来成为新的数组,但是不会被拉平两次,concat不会修改原数组。
~~~
var arr=[1,2,3,4,5];
arr.concat([10,11],13);//[1,2,3,4,5,10,11,13]
arr.concat([1,[2,3]]);//[1,2,3,4,5,1,[1,3]]
~~~
## slice
slice(a,b)a和b可以取负数,表示从a位置开始截取到b位置的一段数组,是一个左闭右开的区间,a和b可以取负数,如果是负数代表倒数第a/b个元素
~~~
var arr=[1,2,3,4,5];
arr.slice(1,3);//[2,3]
arr.slice(1);//[2,3,4,5]
arr.slice(1,-1);//[2,3,4]
arr.slice(-4,-3);//[2]
~~~
## splice
splice删除元素并向数组添加新元素
`object.splice(a)`从左边开始删除a个元素
`object.splice(a,b)`从a位置开始截取其中的b个元素
`object.splice(a,b,c,d)`从a位置开始截取b个元素,并将c和d或者更多的元素插入原数组
需要注意的是splice会修改原数组
~~~
var arr=[1,2,3,4,5];
arr.splice(2);//[3,4,5]
arr;//[1,2];原数组被修改了
var arr=[1,2,3,4,5];
arr.splice(2,2);//[3,4]
arr;//[1,2,5];
var arr=[1,2,3,4,5];
arr.splice(1,1,‘a’,‘b’);//[2]
arr;//[1,"a","b",3,4,5];
~~~
## foreach
foreach()函数从头到尾把数组遍历一遍。有三个参数分别是:数组元素,元素的索引,数组本身
~~~
var arr = [1, 2, 3, 4, 5];
arr.forEach(function(x, index, a)
{//分别对应:数组元素,元素的索引,数组本身
console.log(x + '|' + index + '|' + (a === arr));
});
// 1|0|true
// 2|1|true
// 3|2|true
// 4|3|true
// 5|4|true
~~~
## 常用方法
[https://juejin.im/post/5aab704ef265da239a5f8f52](https://juejin.im/post/5aab704ef265da239a5f8f52)
# 自定义排序
~~~
var list = [
{ max:3, avg:2, min:1 },
{ max:10, avg:15, min:20 }
];
// 根据max字段对list对象进行排序,从小到大的顺序
// x,y就是要比较的数组的单个元素,这里就是list中的一个元素
// 排序方法主要是要提供一个比较大小的规则,换句话说也就是要说明谁大谁小
// 返回值为true or false
function sortByField(x, y) {
return x.max - y.max;
}
console.log(list.sort(sortByField));
~~~
- HTML
- 标签
- 超链接
- 列表
- 表格和表单
- h5新增标签
- 快捷方式
- 标签包含
- CSS
- 选择器
- 行内,块元素,链接
- css三大特性
- 盒子模型
- 定位
- css可见性
- emment书写
- 文本元素
- 外观属性
- 背景
- 浮动
- ps
- 用户界面样式
- 显示和隐藏
- 过渡
- 2D,3D变形
- 动画animation
- 伸缩布局(CSS3)
- BFC
- 优雅降级和渐进增强
- 3D旋转
- 双飞翼和圣杯
- JS基础
- 输出消息的几种方式
- 数据类型
- Date对象
- Math对象
- Array对象
- 字符串常用方法
- 数据类型转换
- 等号运算
- 代码调试
- 数组
- 函数
- WebAPI
- webapi简介
- 获取页面元素
- 事件
- 属性操作
- 创建元素
- 节点操作
- 事件详解
- BOM
- 位置相关属性
- 拖拽弹窗
- 弹出层加遮罩
- ES6
- let和const
- 解构表达式变化
- 函数优化
- map和reduce
- nrm
- npm
- npm基础
- package.json
- 淘宝镜像
- webpack
- 介绍
- 多入口文件(Multiple entry files)
- Webpack CSS loader加载器
- webpack Image loader 加载图片
- uglify-js压缩打包JS
- webpack构建本地服务器
- vue内部指令
- v-if,v-show,v-for
- v-text,v-html
- v-on
- v-model
- v-bind
- v-pre,v-cloak,v-once
- vue全局api
- Vue.directive 自定义指令
- vue.extend构造器的延伸
- vue.set全局操作
- Vue的生命周期(钩子函数)
- Template 制作模版
- Component 初识组件
- Component 组件props 属性设置
- Component 父子组件关系
- Component 标签
- vue选项
- propsData Option全局扩展数据传递
- computed Option 计算选项
- Methods Option 方法选项
- watch选项监控数据
- Mixins 混入选项操作
- Extends Option 扩展选项
- delimiters 选项
- vue实例和内置组件
- 实例属性
- 实例方法
- 实例事件
- 内置组件 -slot
- vue-cli
- vue-cli介绍
- 项目目录结构
- vue-cli模板
- vue-router
- 简介
- 配置子路由
- 参数传递
- 单页面多路由区域操作
- url传递参数
- vscode