[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