日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

关于JavaScript 数组 的一切

發布時間:2025/1/21 javascript 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于JavaScript 数组 的一切 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

      • :dart: JS里的"數組"不是數組,而是對象
      • :dart: 聲明數組的方法
      • :dart: 數組中的length屬性
      • :dart: 如何判定一個對象是數組
      • :dart: 數組的枚舉
      • :dart: 數組的方法
        • 額外

🎯 JS里的"數組"不是數組,而是對象

js里的數組和其他語言中的數組是不同的,實際它并不是數組,而是一種array-like 特性的對象。

它只是把索引轉化成字符串,用作其屬性(鍵)。

例如:

var arr = ['a','b','c'] // 實際上 等價于 var obj = {'0': 'a','1': 'b','2': 'c' }

這也正是為什么 typeof arr = object 的原因。

js 里的 數組 操作起來和其他語言中的數組 操作相似,比如Java。

但是同時js里的數組還能做到像Java這樣強類型語言里的數組 做不到的地方。

// js 單個數組中的元素可以有多種數據類型 var arr = [1,'2',false,[1]]; // 數據類型同時包括數字,字符串,布爾值,數組

而Java 里的單個數組里的元素只能是同一種數據類型,例如如果聲明了int 數組,那么里面的元素就全是int類型的數據

毫無疑問,JS里的“數組”操作起來更加方便,但是這是犧牲性能換來的。

真正的數組是一段線性分配的內存,所以它操作起來速度更加快。

🎯 聲明數組的方法

// 1. 直接創建 var arr = []; //[] 空數組 // 2. new var arr = new Array(); //[] 空數組 var arr = new Array(1,2,3); //[1,2,3]

對于數據中沒有初始化的元素,它的值是undefined;

var arr = [1,2]; //[1,2] console.log(arr[2]); // undefined

🎯 數組中的length屬性

Js“數組”中length是一個奇怪的屬性

它的結果并不完全可信。一般數據里的length指的是數組中有值元素的個數

而js里的length并不是。

var arr = []; //[] console.log(arr.length); // 0 arr[5] = 1000; console.log(arr.length); // 1? 6?

答案是6,但數組 arr 實際有值的就一個。
js里的length 指的是 這個數組的最大整數屬性名加上1,它不一定等于數組里屬性的個數。

此外,js里的length,你還可以隨意的把它變大變小,(簡稱隨地大小變)

var arr = [1,2,3]; arr.length = 1; console.log(arr); // 猜一下arr現在等于什么

對,你沒有猜錯,arr 此時只剩下一個元素了,[1]

通過將length變小,可以去掉所有屬性名大于等于length的值

通過這一點,我們可以更加方便的刪除元素。

arr.length = 0; //清空數組 arr.length = arr.length-1; //去除掉末尾元素

🎯 如何判定一個對象是數組

通過前面的講解,我們已經知道了Js里的數組實際是一個對象,

通過 typeof 來判斷也是對象

那我們怎么判定一個數組是我們想要的js數組呢。

function isArray(obj){return Object.prototype.toString.apply(obj) === '[object Array]';//這個可以直接拿去用,可確保是正確的 }

🎯 數組的枚舉

let arr = [1,2,3];// 1. 普通for循環 for (let i = 0 ; i<arr.length ; i++){console.log(arr[i]); }// 2. for in 循環 (獲取到的是索引) for (let index in arr){console.log(arr[index]); }// 3. ES6新增 增強for循環 (獲取到的是元素的值) for(let item of arr){ console.log(item); }// 4. forEach 循環 arr.forEach(function(item,index){console.log(index,item); })

🎯 數組的方法

任何語言對于數據的操作少不了增刪改查,我們就先從這四個角度去看。

根據屬性名去訪問就好了 arr[index]

//arr.shift() 刪除第一個元素并返回 let arr = [1,2,3]; let element = arr.shift(); //element 是 1 console.log(element);//arr.pop() 刪除最后一個元素并返回 arr = [1,2,3]; element = arr.pop(); //element 是 3 console.log(element);

// 和刪除相對應,增加也有從頭部增加和尾部增加// 插入單個元素 // 1. 從頭部插入 arr.unshift(item...) let arr = [1,2,3]; arr.unshift(0); console.log(arr); //[0,1,2,3]// 2. 從尾部插入 arr.push(item...) arr = [1,2,3]; arr.push(4); console.log(arr); //[1,2,3,4]// 插入多個元素 // 顯然如果插入多個元素,我們一個個去push是很麻煩的,所以提供了一個方法 // arr.concat(item...) concat 這個單詞的含義是合并數組; arr1 = [1,2]; arr2 = [3,4]; arr = arr1.concat(arr2); console.log(arr); //[1,2,3,4] & arr1 沒有改變 還是[1,2]// 關于從任意位置插入,在修改里面會講

// 根據索引修改 arr[index] = value;// 數組修改其實要記一個 arr.splice(start,deleteCount,item...) /** * 參數 start:開始的索引 * deleteCount : 刪除元素的個數 * item: 要插入的元素值 * 返回值 被刪除的元素數組 */let arr = [1,2,3]; let a = arr.splice(0,1,'test'); //從0開始刪除一個元素,并在這個位置插入元素'test' console.log(arr); //["test",1,2] console.log(a); // [1]

額外

  • 數組轉字符串
/*** arr.join(separator)* 數組轉字符串 把數組的每個元素拿出來,用separator將他們分隔開來* 參數 separator 分隔符*/ let arr = [1,2,3]; let c = arr.join(','); //1,2,3 將arr數組中的元素用逗號分割,并轉換成字符串 console.log(c);//其實等價于 let str = ""; for (item of arr){str += (item+','); } str = str.substr(0,str.length-1); //去除掉最后一個逗號 console.log(str);
  • 數組復制
/*** 有的時候我們想復制數組中的一段元素,但是我們不想改變原數組* 就用 arr.slice(start,end)* 參數 start 開始索引* end 結束索引* 實際獲取的元素是 [start,end) 左閉,右開 !!!* 基本上所有語言,(start,end)都是這樣的規定*/let arr = [1,2,3]; let temp = arr.slice(0,2); console.log(temp); //[1,2]
  • 數組反轉
/*** 使用arr.reverse()反轉數組*/ let arr = [1,2,3]; arr.reverse() // 直接改變原數組 console.log(arr); // [3,2,1]

本文中,因為js里的數組實際就是對象,所以所有數組的索引都叫做屬性名。

總結

以上是生活随笔為你收集整理的关于JavaScript 数组 的一切的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。