5.1 引用類型之 Object 和 Array

引用類型

Object

Array

5.1 引用類型

引用類型的值(對象)是引用類型的一個實例。在ECMAScript中,引用類型是一種數據結構,用於將數據和功能組織在一起。
新對象是使用new操作符後跟一個構造函數來創建:
var person = new Object();

5.1.1 Object 類型

推薦使用對象字面量創建一個對象:
var person = {
name: “tyt”,
age: 26
}
這裏創建了一個person對象,包含2個屬性。
訪問對象屬性時使用的是點表示法,但也可以通過[]來表示,當使用{}時要訪問的屬性以字符串形式放在括號中:
alert(person.name);
alert(person[ “name”]);

5.1.2 Array 類型
1.檢測數組:

對於一個網頁或者一個全局作用域而言,使用Instanceof 就能得到滿意的結果:

alert(valeu instanceof Array);

但是對於instanceof 來說,它假定只有一個全局執行環境,如果說網頁中包含多個框架,其實它就存在兩個以上的全局執行環境,從而存在不同的Array 構造函數。
所有ECMAScript5新增了Array.isArray() 方法:

alert( Array.isArray(value) );
2.轉換方法:

所有對象都具有 toLocaleString(); toString();valueOf();方法,
toString()返回數組中每個值的字符串形式拼接而成的一逗號分隔的字符串;
valueOf() 返回的是數組:

var a = [];
console.log(typeof a.toLocaleString());//string
console.log(typeof a.toString());//string 
console.log(typeof a.valueOf());//Object

jion()方法可以使用不同的額分隔符來構建返回的字符串

3.數組棧方法

數組可以表現得像棧一樣,是一種可以限制插入和刪除項的數據結構。
push()方法可以從尾部添加任意項,並返回修改後數組長度;pop()方法可以從數組末尾移除最後一項,並返回最後一項。

4.隊列方法:

shift()方法可以移除數組的第一項。並返回;與之對應的是unshift(),可以在數組前端添加任意項,並返回數組長度。

5.重排序方法:

數組中存在兩個可以直接使用的重排序方法:reverse(),它是翻轉數組項;sort()方法默認按升序排列,sort()方法會調用數組的tostring()方法,比較得到的字符串,確定排序;
對於數值型可使用簡單的排序方法:

var arr = [2,4,1,3,67,54,32,78];
function compare (a,b) {
		return a-b;
}
arr.sort(compare);
console.log(arr);//[1,2,3,4,32,54,67,78]
6.操作方法:

concat() 基於當前數組所有項,創建一個新數組:

var colors = ["red", "green", "blue"];
var colors2 = colors.concat("yellow", ["black", "brown"]);
alert(colors); //red,green,blue
alert(colors2); //red,green,blue,yellow,black,brown

slice()方法基於當前數組一個或多個項創建一個數組,接受一個或兩個參數:

var colors = ["red", "green", "blue", "yellow", "purple"];
var colors2 = colors.slice(1);//返回從索引1到結尾的值
var colors3 = colors.slice(1,4);//返回索引從1到3的值
alert(colors2); //green,blue,yellow,purple
alert(colors3); //green,blue,yellow	

splice() 方法:主要用途是向數組中插入項
刪除:提供兩個參數,要刪除的第一項的位置,要刪除的項數;返回刪除的項;
插入:提供三個參數,起始位置 0(要刪除的項數) 要插入的項;返回一個空數組
替換:提供三個參數,起始位置 1(要刪除的項數) 要插入的項;返回替換項

var colors = ["red", "green", "blue"];
var removed = colors.splice(0,1); // 刪除第一項
alert(colors); // green,blue
alert(removed); // red,返回的數組中只包含一項
removed = colors.splice(1, 0, "yellow", "orange"); // 從位置 1 開始插入兩項
alert(colors); // green,yellow,orange,blue
alert(removed); // 返回的是一個空數組
removed = colors.splice(1, 1, "red", "purple"); // 插入兩項,刪除一項
alert(colors); // green,red,purple,orange,blue
alert(removed); // yellow,返回的數組中只包含一項
7.位置方法:

indexof() 和 lastindexof() :接受兩個參數:要查找的項和查找起點索引,一個是從前往後找,一個是從後往前找。沒有的情況下返回-1.

8.迭代方法:

數組定義了5個迭代方法,每個方法都接收兩個參數:要在每一項運行的函數和(可選)運行該函數的作用域對象——影響this的值。傳入方法中的函數會接收三個參數:數組項的值,該項的索引,數組對象本身。
every() :對數組的每一項運行給定函數,每一項都返回true,則返回true;
filter() : 對數組的每一項運行給定函數,返回爲true的項組成的數組;
foreach() :對數組的每一項運行給定函數,沒有返回值;
map() : 對數組的每一項運行給定函數,返回函數每次調用後的結果組成的數組;
some() : 對數組的每一項運行給定函數,有一項返回true,則返回true。

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item, index, array){
											return (item > 2);
									});
alert(everyResult); //false
9.歸併方法:

reduce() 和 reduceRight() ,這兩個方法會迭代數組所有項,然後構建一個最終返回值:用來求所有項的和:

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;//prev 前值,cur當前值,第一次迭代發生在第二項上
});
alert(sum); //15

整理不易,希望看到的朋友幫忙點個贊,有什麼問題也可以一起交流討論。有什麼不對的希望您在下方留言,幫忙指出錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章