菜鳥筆記-數組基礎

一 建立方法數組

1. 空數組 var Obj = new Array();app

2. 指定長度數組 var Obj = new Array(size);函數

3. 制定元素數組 var Obj = new Array(元素1, 元素2, 元素3,.....元素N)ui

4. 單維數組 var Obj = new Array(元素1, 元素2, 元素3,.....元素N)this

5. 多維數組 var Obj = new Array([數組序列1],[數組序列2],.....[數組序列N])編碼

 

二 基本操做spa

1. 存取數組元素prototype

(1) 單維數組 -- arr[index]code

(2) 多維數組 -- arr[外層數組下標][內層數組下標]對象

(3) 特性:

a. 數組長度是彈性的,可自由伸縮
b. 數組下標從0開始
c. 下標類型--- 數值
--- 非數值(轉爲字符串||生成關聯數組||下標將做爲對象屬性的名字)

 1               // 轉爲字符串 
 2                 var mycars = new Array()
 3                 mycars["aa"] = ["寶馬",12];
 4                 mycars[1] = "奔馳"
 5                 mycars[2] = "賓利"
 6 
 7                 for (x in mycars){
 8                     document.write(mycars[x] + "<br />");
 9                     document.write(x + "<br />");
10                 }

 

// Javascript的數組其實不像PHP或者其餘一些語言同樣擁有真正的字符串下標,當咱們試圖爲一個js數組添加字符串下標的時候,其實就至關於爲該數組對象添加了一個屬性,屬性名稱就是咱們所謂的「字符串下標」。因爲爲數組對象添加屬性不會影響到同爲該對象屬性的length的值,所以該值將始終爲零。一樣地,.pop()和.shift()等做用於數組元素的方法也不可以做用於這些對象屬性。所以,若是要使用的是一個徹底由「字符串下標」組成的數組,那仍是將其聲明爲一個Object類型的對象要更好一些。

 1 var array = [];
 2 array["a"] = "hello";
 3 array["b"] = "world";
 4 array["c"] = "yes";
 5 console.log("length: " + array.length);// length:0
 6 
 7 var array = [];
 8 array["a"] = "hello";
 9 array["b"] = "world";
10 array["c"] = "yes";
11 array["10"] = "no";
12 console.log("length: " + array.length);// length:11
13 console.log(array);//[undefined*10, 'no']

 

d. 數組元素可添加到對象中去

 1 //普通作法-------------------------------------
 2 
 3 var obj = {};
 4 
 5 var pusharr = [11,3,4,5,6,7];
 6 
 7 for (var i = 0; i < pusharr.length; i++) {
 8 obj[i] = pusharr[i]
 9 }
10 
11 console.log(obj)
12 
13 //簡單作法---------------------------------------
14 
15 var obj1 = {};
16 
17 [].push.apply(obj1, [1,6,8,0,86])
18 
19 console.log(obj1)

2. 增長數組 使用「[]」運算符指定一個新下標

3. 刪除數組 delete 數組名[下標]

4. 遍歷數組 for (var 數組元素 in 數組)

 

三 數組屬性

1. constructor 引用數組對象的構造函數

 1 var arr = new Array();
 2 arr[0] = '11';
 3 arr[1] = '9994';
 4 arr[2] = '678';
 5 
 6 if (arr.constructor == Array){
 7 document.write('這是一個數組')
 8 }
 9 
10 function Person(name, job, born){
11 this.name = name;
12 this.job = job;
13 this.born = born
14 }
15 
16 var abby = new Person('anna', 'work', 'shanghai');
17 document.write(abby.constructor)

 

2. length 返回數組的長度

3. prototype 經過增長屬性和方法擴展數組定義

 1 function person(name, job, born){
 2 this.name = name;
 3 this.job = job;
 4 this.born = born;
 5 }
 6 
 7 var bill = new person('andy', 'work', 'shanghai')
 8 
 9 person.prototype.salary = null;
10 
11 document.write(bill.salary)//null

 

四 ES3方法

1.添加

(1) push()向數組的末尾添加一個或多個元素,並返回新的長度。

1 var arr = [1,4,5,6,8,90];
2 document.write(arr.push('James'));// 返回數組長度 6

 

(2) unshift() 向數組的開頭添加一個或更多元素,並返回新的長度。

1 var arr = new Array()
2 arr[0] = "George"
3 arr[1] = "John"
4 arr[2] = "Thomas"
5 
6 document.write(arr + "<br />") //George,John,Thomas
7 document.write(arr.unshift("William") + "<br />")//4
8 document.write(arr)//William,George,John,Thomas

 

(3)concat() //用於鏈接兩個或多個數組。該方法不會改變現有的數組,而僅僅會返回被鏈接數組的一個副本。

 1 --------------------
 2 var a = [1,2,3];
 3 document.write(a.concat(4,5));//1,2,3,4,5
 4 --------------------------
 5 var arr = new Array(3)
 6 arr[0] = "George"
 7 arr[1] = "John"
 8 arr[2] = "Thomas"
 9 
10 var arr2 = new Array(3)
11 arr2[0] = "James"
12 arr2[1] = "Adrew"
13 arr2[2] = "Martin"
14 
15 var arr3 = new Array(2)
16 arr3[0] = "William"
17 arr3[1] = "Franklin"
18 
19 document.write(arr.concat(arr2,arr3))//George,John,Thomas,James,Adrew,Martin,William,Franklin

 

2. 刪除

(1) pop()刪除 arrayObject 的最後一個元素,把數組長度減 1,而且返回它刪除的元素的值。若是數組已經爲空,則 pop() 不改變數組,並返回 undefined 值。

1 var arr = new Array(3)
2 arr[0] = "George"
3 arr[1] = "John"
4 arr[2] = "Thomas"
5 
6 document.write(arr.pop())//Thomas

 

(2) shift()用於把數組的第一個元素從其中刪除,並返回第一個元素的值。

1 var arr = new Array(3)
2 arr[0] = "George"
3 arr[1] = "John"
4 arr[2] = "Thomas"
5 
6 document.write(arr.shift() + "<br />")//George

 

3. 子數組

(1) splice(index, 刪除個數,增長元素) 方法向/從數組中添加/刪除項目,而後返回被刪除的項目。

1 var arr1 = ['jjj', 'lll', 'hhhh', 'oooo']
2 -------------------------------
3 console.log(arr1.splice(1));//若是隻有一位數字,那麼選取從第二位一直到最後一位
4 console.log(arr1) // jjj
5 -----------------------------
6 console.log(arr1.splice(2, 1, 'Anna'))//hhhh
7 console.log(arr1) //['jjj', 'lll', 'oooo']

 

(2) slice()方法可從已有的數組中返回選定的元素。此方法並不改變原來的數組.
slice(起始位置,結束位置-1)//若是數值是負數,則用數組長度加上該值肯定位置

 1 ---------------------------------
 2 var arr = new Array(3)
 3 arr[0] = "George"
 4 arr[1] = "John"
 5 arr[2] = "Thomas"
 6 
 7 document.write(arr.slice(1) + "<br />")//John,Thomas 若是隻有一位數字,那麼選取從第二位一直到最後一位
 8 document.write(arr) //George,John,Thomas
 9 ---------------------------------
10 
11 var arr = new Array(6)
12 arr[0] = "George"
13 arr[1] = "John"
14 arr[2] = "Thomas"
15 arr[3] = "James"
16 arr[4] = "Adrew"
17 arr[5] = "Martin"
18 
19 document.write(arr + "<br />")
20 document.write(arr.slice(2,4) + "<br />")//Thomas,James 選取index爲2到4以前的元素,及2-3
21 document.write(arr)
22 -----------------------------------------

 

4. 數組排序

(1) reverse()方法用於顛倒數組中元素的順序。

1 var arr = [1,4,5,6,8,90];
2 console.log(arr.reverse())// [90,8,6,5,4,1]

 

(2) sort() 排序

//默認按字符編碼排序
// 1. -----------------------
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"

document.write(arr + "<br />")
document.write(arr.sort())//Adrew,George,James,John,Martin,Thomas

// 2. ---------------------------
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"

document.write(arr + "<br />")
document.write(arr.sort())//1,10,1000,25,40,5

//請注意,上面的代碼沒有按照數值的大小對數字進行排序,要實現這一點,就必須使用一個排序函數:
function sortNumber(a,b)
{
return a - b
}

var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"

document.write(arr + "<br />")
document.write(arr.sort(sortNumber))//1,5,10,25,40,1000

 

5. 數組轉換

(1) toString()方法可把數組轉換爲字符串,並返回結果。

var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

document.write(arr.toString())//George,John,Thomas

 

(2) toLocaleString 把數組轉換爲本地字符串。

var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

document.write(arr.toLocaleString())//George, John, Thomas

 

//詳細舉例區別 toString() 和 toLocaleString()

---------------------------
var a=1234

a.toString()
"1234"

a.toLocaleString()
"1,234"
---------------------------
var sd=new Date()


sd
Wed Feb 15 2017 11:21:31 GMT+0800 (CST)


sd.toLocaleString()
"2017/2/15 上午11:21:31"


sd.toString()
"Wed Feb 15 2017 11:21:31 GMT+0800 (CST)"

------------------------------------------

 

(3) join 用數組的元素組成字符串

var arr = new Array();
arr[0] = 'Judy';
arr[1] = 'Anna';
arr[2] = 'back';

document.write(arr.join('.'));//Judy.Anna.back
document.write(arr.join('---'));//Judy---Anna---back

 

五 ES5方法

1. 位置方法

(1) indexOf()

//indexof(要查找的項, 查找起點位置的索引) 從左往右查找
var fruits=["Banana","Orange","Apple","Mango","Banana","Orange","Apple"];
var a = fruits.indexOf("Apple");
console.log(a)//2

 

(2) lastIndexOf()

//lastIndexOf(要查找的項, 查找起點位置的索引)從左往右查找
var fruits=["Banana","Orange","Apple","Mango","Banana","Orange","Apple"];
var a = fruits.indexOf("Apple");
console.log(a)//6

 

2. 迭代方法

(1) every()

//判斷數組中每一項都是否知足條件,只有全部項都知足條件,纔會返回true。
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.every(function(x) {
return x < 10;
}); 
console.log(arr2); //true
var arr3 = arr.every(function(x) {
return x < 3;
}); 
console.log(arr3); // false

 

(2)filter()

//「過濾」功能,數組中的每一項運行給定函數,返回知足過濾條件組成的數組。
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var arr2 = arr.filter(function(x, index) {
return index % 3 === 0 || x >= 8;
}); 
console.log(arr2); //[1, 4, 7, 8, 9, 10]

 

(3)forEach()

//對數組進行遍歷循環,對數組中的每一項運行給定函數。這個方法沒有返回值。參數都是function類型,默認有傳參,參數分別爲:遍歷的數組內容;第對應的數組索引,數組自己。
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

 

(4)map()

//指「映射」,對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組。
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.map(function(item){
return item*item;
});
console.log(arr2); //[1, 4, 9, 16, 25]

(5)some()
//判斷數組中是否存在知足條件的項,只要有一項知足條件,就會返回true。
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.some(function(x) {
return x < 3;
}); 
console.log(arr2); //true
var arr3 = arr.some(function(x) {
return x < 1;
}); 
console.log(arr3); // false

 

3.縮小方法

(1) reduce()

(2)reduceRight()

//這兩個方法都會實現迭代數組的全部項,而後構建一個最終返回的值。reduce()方法從數組的第一項開始,逐個遍歷到最後。而 reduceRight()則從數組的最後一項開始,向前遍歷到第一項。

//這兩個方法都接收兩個參數:一個在每一項上調用的函數和(可選的)做爲歸併基礎的初始值。

//傳給 reduce()和 reduceRight()的函數接收 4 個參數:前一個值、當前值、項的索引和數組對象。這個函數返回的任何值都會做爲第一個參數自動傳給下一項。第一次迭代發生在數組的第二項上,所以第一個參數是數組的第一項,第二個參數就是數組的第二項。

//下面代碼用reduce()實現數組求和,數組一開始加了一個初始值10。

var values = [1,2,3,4,5];
var sum = values.reduceRight(function(prev, cur, index, array){
return prev + cur;
},10);
console.log(sum); //25
相關文章
相關標籤/搜索