JavaScript Array類型

? 數組對象的作用是:使用單獨的變量名來存儲一系列的值。
? 數組就是一堆數據的分組或者集合。
? 數組的對象是Array,也是非常常用的引用類型
? 例如:[1, 3,‘sss’,333]

1.創建數組

1.1 使用 new 操作符創建數組對象
var arr = new Array();
arr[0] = 19;//數組的索引從 0 開始
arr[1] = "www.hamkd.com";
arr[2] = "www.aicoder.com";
數組中可以存儲任何數據類型的數據(其他語言中數組的數據類型一旦確定只能存儲特定類型的數據)
通過[]和索引來訪問和設置數組的內容
數組的索引是從 0 開始!!!
JavaScript 中的數字的容量可以動態改變
數組的容量最大為:4294967295 個 (232-1)
求冪運算符:** (補充)
數組的構造函數可以傳遞數組的容量的參數
var arr = new Array();// 創建一個空數組
var arr = new Array(3);//定義數組的容量為 3 個
var arr = new Array("a","b","c");
//定義一個數字,有 a , b ,c 三個字符串
數組的長度可以通過 length 數組來獲取。
length 是可讀和可以進行設置,可以對數組進行截斷操作。
var arr = new Array(); // 創建一個空數組類型; []
// console.log(arr.toString());
arr[0] = 1; // length = 1
arr[1] = 2; // length = 2
arr[2] = 'sss'; // length = 3
console.log(arr); // [1, 2, 'sss']
console.log("length =" + arr.length);
// 構造函數創建數組傳遞參數
var arr2 = new Array(4); // 給構造函數傳遞數值類型,那么它認為是創建容量為數值的數組
arr2[0] = 'sssss';
arr2[1] = 0;
arr2[2] = 0;
arr2[3] = 0;
arr2[4] = 0;
console.log(arr2);
// 創建數組的時候,順便進行初始化數組的內容
var arr3 = new Array(1,2,3,'sssd', 'malun', true, [22,33]);
console.log(arr3);// length = 7
// 如果減小 length 值,就相當于截斷了數組。
arr3.length = 2;
console.log( arr3 ); // => [1,2]
1.2構造函數創建數組
? 數組的構造函數可以傳遞數組的容量的參數
? var arr = new Array();// 創建一個空數組
? var arr = new Array(3);//定義數組的容量為3個
? var arr = new Array("a","b","c");
? //定義一個數字,有a , b ,c 三個字符串
? 數組的長度可以通過length數組來獲取。
? length是可讀和可以進行設置,可以對數組進行截斷操作。不要這么用!!!!
1.3字面量創建數組
var arr = [];//創建一個空數組
var arr = [1,2,3];//創建三個數字的數字。
var arr=[1, ,2];//中間的省略的是 undefined
var arr = [1 ,”dd”,true, [1,3], { age: 19}, 33];
數組的元素的類型可以是任意類型。
var a1 = []; //創建空數組
// 創建一共復雜數組
var a2 = [1, 2, 'sss', true, {age:19}, null, undefined];
console.log(a2.toString());
console.log(a2);
var a3 = [2, ,3]; // => [2, undefined, 3]
console.log(a3);
// 這種方式最多,推薦這么使用。
console.log(a3[0]); // 數組的索引是從 0 開始。所有開發語言數組都是從 0 開始。

2.遍歷數組

length 屬性
length 屬性,如果是連續數組,那么 length 就是數組元素的個數如果是稀疏數組,那么 length 不能
代表元素的個數
for 循環方式遍歷數組
// 如果是連續的數組,可以中使用 lenth 代表數組中的元素個數。
var a = [1,2,3,89, "slj", true]; // length = 6;
console.log('length = ' + a.length);
// 輸出數組中的所有元素。
for(var i = 0; i < a.length; i++) {
      console.log(a[i]);
}
for in 循環的方式
// 如果是連續的數組,可以中使用 lenth 代表數組中的元素個數。
var a = [1,2,3,89, "slj", true]; // length = 6;
// 另外我們還可以使用 for in 的方式遍歷數據。 也可以把繼承自原型的屬性也進行遍歷。
// for in 遍歷對象,拿到的是對象的屬性名,而不是屬性值。
for(var k in a) { // for in 遍歷數組,k 值是數組的索引編號,不是數組的元素值。
    // k 0 ,1 ,2
    console.log(a[k]); // k 是索引編號不是數組元素值
}
數組的索引是從 0 開始!!!不是從 1 開始
注意:從原型上繼承來的屬性也會被 for in 遍歷,所以如果需要去掉這部分屬性可以通過
hasOwnProperty()進行過濾。
hasOwnProperty()只有當是對象自己屬性才返回 true,如果是繼承的返回 false。
數組遍歷.png
2.1數組遍歷案例
案例:一個數組,合法值為 1,2 或 3,其余為不合法,統計合法及不合法的個數。
// 案例:一個數組,合法值為 1,2 或 3,其余為不合法,統計合法及不合法的個數。
var t = [1, 4, 9, 'sss', 3, '2', 2, 3, 2, 1];
var rigthfulNum = 0, // 合法的個數
illNum = 0; // 非法的個數
//第一種: 遍歷數組中的每個元素,判斷是否是合法,如果合法給rigthfulNum += 1
// for(var i = 0; i < t.length; i++) {
   // if(t[i] === 1 || t[i] === 2 || t[i] === 3) {
        // rigthfulNum += 1;
    // } else { // else 可以不用寫。
        // illNum += 1;
    // }
// }
// console.log('合法:' + rigthfulNum);
// console.log('非法:' + illNum);
// // 第二種寫法: 只求 rightfulNum, illNum 通過 length -rightfulNum
// for(var i = 0; i < t.length; i++) {
    // if(t[i] === 1 || t[i] === 2 || t[i] === 3) {
        // rigthfulNum += 1;
    // }
// }
// illNum = t.length - rigthfulNum; // 通過數組的總長度-合法的剩下的就非法的。
// console.log('合法:' + rigthfulNum);
// console.log('非法:' + illNum);
// 第三種:for in
// for(var k in t) {
    // // console
    // switch(t[k]) {
        // case 1:
            // rigthfulNum += 1;
            // break;
        // case 2:
            // rigthfulNum += 1;
            // break;
        // case 3:
            // rigthfulNum += 1;
            // break;
        // default:
            // illNum +=1 ;
    // }
  // }
// console.log('合法:' + rigthfulNum);
// console.log('非法:' + illNum);
// switch 優化版本
    for(var k in t) {
        // console
        switch(t[k]) {
            case 1:
            case 2:
            case 3:
                rigthfulNum += 1;
                break;
            default:
              illNum +=1 ;
        }
    }
console.log('合法:' + rigthfulNum);
console.log('非法:' + illNum);
2.3稀疏數組
數組中的數據的索引不一定都是連續的。非連續的數組就是稀疏數組。
比如:
var t = [1, 3];
t[100]= true;
// => t.length = 101;
// => t = [1, 3, undefinded*98, true]
// 實際上有數據的只有 1,3,true 中間有 98 個 undefined可以使用 for in 循環越過 
undefined 的數據。
也就是數組的元素的個數不一定跟 length 相等
注意:稀疏數組盡量少用!!!!!或者就是不用!!!!
var t = [1, 2];
// 0 , 1
t[100] = 'sslj'; // 索引到了 100, length = 101
console.log(t);
console.log(t[10]); //undefined
// for in 循環會越過稀疏數組種的 undefied 空值。
for(var k in t) {
    console.log(t[k]);
}
結論:
// 1、 length 和數組的元素的個數不一定相等
// 2、 數組不一定是連續的
// 3、 使用 for in 循環可以對稀疏數組的空值 undefined 進行過濾。
// 4、 不要稀疏數組!!!!!
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執行單位為行(line),也就是一...
    悟名先生閱讀 4,185評論 0 13
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,261評論 0 4
  • 第3章 基本概念 3.1 語法 3.2 關鍵字和保留字 3.3 變量 3.4 數據類型 5種簡單數據類型:Unde...
    RickCole閱讀 5,144評論 0 21
  • ??引用類型的值(對象)是引用類型的一個實例。 ??在 ECMAscript 中,引用類型是一種數據結構,用于將數...
    霜天曉閱讀 1,078評論 0 1
  • 感賞今天彩羽認真的做了一天的作業。 感賞彩羽做作業到晚上十一點半。 感賞彩羽能夠控制自已學習。 感賞彩羽自控力得到...
    無心言歡閱讀 184評論 0 0