本文介紹了Js的Array 陣列對象,具體內容如下
目錄
1. 介紹:介紹 Array 陣列物件的說明、定義方式、屬性。
2. 實例方法:介紹 Array 物件的實例方法:concat、every、filter、forEach、indexOf、join、lastIndexOf、map、pop、push、reverse、shift、slice、sort、splice、toString、tounshift等。
3. 靜態方法:介紹 Array 物件的靜態方法:Array.isArray()。
4. 實際操作:對 Array 進行範例操作:索引、for遍歷、淺度複製、深度複製等操作。
一. 介紹
1.1 說明
陣列是數值的有序集合。每個值叫做一個元素,而每個元素在陣列中都有一個位置,以數字表示,稱為索引。 JavaScript陣列是無型別:陣列元素可以是任意型別,而且同一個陣列中的不同元素也可能有不同的型別。 --《JavaScript權威指南(第六版)》
1.2 定義方式
var names = new Array("张三", "李四", "王五"); //或者 var names = ["张三", "李四", "王五"];
1.3 屬性
length:表示陣列內的元素長度。
二. 實例方法
常用方法:
1) unshift() :在陣列頭部插入元素
2) shift() :移除並傳回陣列的第一個元素
3) push() :在陣列尾部插入元素
4) pop() :移除並傳回陣列的最後一個元素
2.1 concat() :把元素銜接到陣列中。不會修改原先的array,傳回新的陣列
參數:
①value1,value2.....valueN :任多個值
傳回值:
{Array} 一個新的數組,包含原先的Array和新加入的元素。
範例:
var demoArray = ['a', 'b', 'c']; var demoArray2 = demoArray.concat('e'); console.log(demoArray); // => demoArray:['a','b','c'] 原数组不发生变更 console.log(demoArray2); // => ['a','b','c','e']
2.2 every() :依序遍歷元素,判斷每個元素是否都為true
參數:
①function(value,index,self){} :每個元素都會使用此函數判斷是否為true,當判斷到一個為false時,立即結束遍歷。
value :陣列遍歷的元素
index :元素序號
self :Array本身
傳回值:
{Boolean} :只有每個元素都為true才回傳true;只要一個為false,就回傳false。
範例:
var demoArray = [1, 2, 3]; var rs = demoArray.every(function (value, index, self) { return value > 0; }); console.log(rs); // => true
2.3 filter() :依序遍歷元素,傳回包含符合條件元素的新的陣列
參數:
①function(value,index,self){} :每個元素依序呼叫此函數,傳回包含符合條件元素的新的陣列。
value :陣列遍歷的元素
index :元素序號
self :Array本身
傳回值:
{Array} 一個包含符合條件元素的新的陣列
範例:
var demoArray = [1, 2, 3]; var rs = demoArray.filter(function (value, index, self) { return value > 0; }); console.log(rs); // => [1, 2, 3]
2.4 forEach() :依序遍歷元素,執行指定的函數;無回傳值
參數:
①function(value,index,self){} :每個元素依序呼叫此函數
value :陣列遍歷的元素
index :元素序號
self :Array本身
傳回值:無
範例:
var demoArray = [1, 2, 3]; demoArray.forEach(function (value, index, self) { console.log(value); // => 依次输出:1 2 3 });
2.5 indexOf() :在陣列中尋找匹配元素。若不存在符合的元素時,就回傳-1。尋找的時候使用"==="運算符,所以要區分1和'1'
參數:
①value :要在陣列中尋找的值。
②start :開始尋找的序號位置,如果省略,則為0.
傳回值:
{Int} :傳回數組中第一個符合value的序號,若不存在,則回傳-1
範例:
['a', 'b', 'c'].indexOf('a'); // =>0 ['a', 'b', 'c'].indexOf('a', 1); // =>-1 ['a', 'b', 'c'].indexOf('d'); // =>-1 [1, 2, 3].indexOf('1'); // => -1 :采用的'==='匹配方式
2.6 join() :將陣列中所有元素透過一個分隔符號拼接為一個字串
參數:
①sparator {String}:各元素之間的分隔符,如果省略,預設以因為英文逗號','分隔。
傳回值:
{String} :各元素以sparator為分隔符,拼接而成的一個字串。
範例:
['a', 'b', 'c'].join(); // => 'a,b,c' ['a', 'b', 'c'].join('-'); // => 'a-b-c'
2.7 lastIndexOf :在陣列中反向尋找符合元素。若不存在符合的元素時,就回傳-1。尋找的時候使用"==="運算符,所以要區分1和'1'
參數:
①value :要在陣列中尋找的值。
②start :開始尋找的序號位置,如果省略,則從最後一個元素開始尋找。
傳回值:
{Int} :從右到左開始找出數組中第一個符合value的序號,若不存在,回傳-1
範例:
['a', 'b', 'c'].lastIndexOf('a'); // => 0 ['a', 'b', 'c'].lastIndexOf('a', 1); // => 0 ['a', 'b', 'c'].lastIndexOf('d'); // => -1 [1, 2, 3].lastIndexOf('1'); // => -1 :采用的'==='匹配方式
2.8 map() :依次遍历并计算每个元素,返回计算好的元素的数组
参数:
①function(value,index,self){} :每个元素依次调用此函数,返回计算好的元素
value :数组遍历的元素
index :元素序号
self :Array本身
返回值:
{Array} 一个包含就算好的元素的新的数组
示例:
[1, 2, 3].map(function (value, index, self) { return value * 2; }); // => [2, 4, 6]
2.9 pop() :移除并返回数组的最后一个元素
参数:无
返回值:
{Object} 数组的最后一个元素;若数组为空,返回undefined
示例:
var demoArray = ['a', 'b', 'c']; demoArray.pop(); // => c demoArray.pop(); // => b demoArray.pop(); // => a demoArray.pop(); // => undefined
2.10 push() :把元素添加到数组尾部
参数:
①value1,value2.....valueN :任意多个值添加到数组尾部
返回值:
{int} 数组新的长度
示例:
var demoArray = ['a', 'b', 'c']; demoArray.push('d'); // => 4, demoArray : ['a', 'b', 'c', 'd'] demoArray.push('e', 'f'); // => 6, demoArray :['a', 'b', 'c', 'd', 'e', 'f'] console.log(demoArray); // => ['a', 'b', 'c', 'd', 'e', 'f']
2.11 reverse() :反转数组元素的顺序
参数:无
返回值:无(在原数组内进行元素顺序反转)。
示例:
var demoArray = ['a', 'b', 'c', 'd', 'e']; demoArray.reverse(); console.log(demoArray); // => ["e", "d", "c", "b", "a"]
2.12 shift() :移除并返回数组的第一个元素
参数:无
返回值:
{Object} 数组的第一个元素;若数组为空,返回undefined。
示例:
var demoArray = ['a', 'b', 'c']; demoArray.shift(); // => a demoArray.shift(); // => b demoArray.shift(); // => c demoArray.shift(); // => undefined
2.13 slice(startIndex,endIndex) :返回数组的一部分
参数:
①startIndex :开始处的序号;若为负数,表示从尾部开始计算,-1代表最后一个元素,-2倒数第二个,依此类推。
②endIndex : 结束处的元素后一个序号,没指定就是结尾。截取的元素不包含此处序号的元素,结尾为此处序号的前一个元素。
返回值:
{Array} 一个新的数组,包含从startIndex到endIndex前一个元素的所有元素。
示例:
[1, 2, 3, 4, 5, 6].slice(); // => [1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5, 6].slice(1); // => [2, 3, 4, 5, 6] :从序号1开始截取 [1, 2, 3, 4, 5, 6].slice(0, 4); // => [1, 2, 3, 4] :截取序号0到序号3(序号4的前一个)的元素 [1, 2, 3, 4, 5, 6].slice(-2); // => [5, 6] :截取后面的2个元素
2.14 sort(opt_orderFunc) :按一定的规则进行排序
参数:
①opt_orderFunc(v1,v2) {Function}:可选的排序规则函数。若省略,将按照元素的字母进行从小到大排序。
v1 :遍历时前面的元素。
v2 :遍历时后面的元素。
排序规则:
比较v1和v2,返回一个数字来表示v1和v2的排序规则:
小于0 :v1小于v2,v1排在v2的前面。
等于0 :v1等于v2,v1排在v2的前面。
大于0 :v1大于v2,v1排在v2的后面。
返回值:无(在原先数组里进行排序操作)。
示例:
[1, 3, 5, 2, 4, 11, 22].sort(); // => [1, 11, 2, 22, 3, 4, 5] :这里都元素都被转换为字符,11的字符在2前 [1, 3, 5, 2, 4, 11, 22].sort(function (v1, v2) { return v1 - v2; }); // => [1, 2, 3, 4, 5, 11, 22] :从小到大排序 [1, 3, 5, 2, 4, 11, 22].sort(function (v1, v2) { return -(v1 - v2); //取反,就可以转换为 从大到小 }); // => [22, 11, 5, 4, 3, 2, 1]
2.15 splice() :插入、删除数组元素
参数:
①start {int} :开始插入、删除或替换的起始序号。
②deleteCount {int} :要删除元素的个数,从start处开始计算。
③value1,value2 ... valueN {Object} :可选参数,表示要插入的元素,从start处开始插入。若②参不为0,那么先执行删除操作,再执行插入操作。
返回值:
{Array} 返回一个包含删除元素的新的数组。若②参为0,表示没元素删除,返回一个空数组。
示例:
// 1.删除 var demoArray = ['a', 'b', 'c', 'd', 'e']; var demoArray2 = demoArray.splice(0, 2); // 删除从序号从0开始的2个元素,返回包含删除元素的数组:['a', 'b'] console.log(demoArray2); // => ['a', 'b'] console.log(demoArray); // => ['c', 'd', 'e'] // 2.插入 var demoArray = ['a', 'b', 'c', 'd', 'e']; var demoArray2 = demoArray.splice(0, 0, '1', '2', '3'); // ②参为0,返回空数组 console.log(demoArray2); // => [ ] console.log(demoArray); // => ['1', '2', '3', 'a', 'b', 'c', 'd', 'e'] // 3.先删除再插入 var demoArray = ['a', 'b', 'c', 'd', 'e']; // 当②参不为0,那么先执行删除操作(删除序号从0开始的4个元素,返回包含被删除元素的数组),再执行插入操作 var demoArray2 = demoArray.splice(0, 4, '1', '2', '3'); console.log(demoArray2); // => ['a', 'b', 'c', 'd'] console.log(demoArray); // => ['1', '2', '3', 'a', 'b', 'c', 'd', 'e']
2.16 toString() :将数组中所有元素通过一个英文逗号','拼接为一个字符串
参数:无
返回值:
{String} 数组中所有元素通过一个英文逗号','拼接为一个字符串,并返回。与调用无参join()方法一样。
示例:
[1, 2, 3, 4, 5].toString(); // => '1,2,3,4,5' ['a', 'b', 'c', 'd', 'e'].toString(); // => 'a,b,c,d,e'
2.17 unshift() :在数组头部插入元素
参数:
①value1,value2.....valueN :任意多个值添加到数组头部
返回值:
{int} 数组新的长度
示例:
var demoArray = []; demoArray.unshift('a'); // => demoArray:['a'] demoArray.unshift('b'); // => demoArray:['b', 'a'] demoArray.unshift('c'); // => demoArray:['c', 'b', 'a'] demoArray.unshift('d'); // => demoArray:['d', 'c', 'b', 'a'] demoArray.unshift('e'); // => demoArray:['e', 'd', 'c', 'b', 'a']
三. 静态方法
3.1 Array.isArray() :判断对象是否为数组
参数:
①value {Object}:任意对象
返回值:
{Boolean} 返回判断结果。当为 true时,表示对象为数组;为false时,表示对象不是数组
示例:
Array.isArray([]); // => true Array.isArray(['a', 'b', 'c']); // => true Array.isArray('a'); // => false Array.isArray('[1, 2, 3]'); // => false
四. 实际操作
4.1 索引
说明:每个元素在数组中有一个位置,以数字表示,称为索引。索引是从0开始计,即第一个元素的索引为0,第二个元素的索引为1,依此类推;
当获取一个数组不存在的索引时,返回 undefined。
示例:
var demoArray = ['a', 'b', 'c', 'd', 'e']; demoArray[0]; // => 获取第一个元素:'a' demoArray[0] = 1; // 设置第一个元素为 1 console.log(demoArray); // => demoArray:[1, 'b', 'c', 'd', 'e'] console.log(demoArray[9]); // => undefined :当获取的索引不存在时,返回 undefined
4.2 for 语句
说明:可以通过for语句逐个遍历数组
示例:
var demoArray = ['a', 'b', 'c', 'd', 'e']; for (var i = 0, length = demoArray.length; i < length; i++) { console.log(demoArray[i]); // => 逐个输出数组内的元素 }
4.3 浅度复制
说明:Array类型是一种引用类型;当数组a复制给数组b时,对数组b进行元素修改,数组a也会发生修改。
示例:
var demoArrayA = ['a', 'b', 'c', 'd', 'e']; var demoArrayB = demoArrayA; // 把数组A 赋值给数组B demoArrayB[0] = 1; // 对数组B 的元素进行修改 console.log(demoArrayA); // => [1, 'b', 'c', 'd', 'e']:数组A 的元素也发生了变更
4.4 深度复制
说明:使用concat()方法,返回新的数组;防止浅度复制的情况发生,对数组b进行元素修改操作,数组a不发生变更。
示例:
var demoArrayA = ['a', 'b', 'c', 'd', 'e']; var demoArrayB = demoArrayA.concat(); // 使用concat()方法,返回新的数组 demoArrayB[0] = 1; // 对数组B 的元素进行修改 console.log(demoArrayA); // => ['a', 'b', 'c', 'd', 'e']:数组A 的元素没变更 console.log(demoArrayB); // => [ 1, 'b', 'c', 'd', 'e']:数组B 的元素发生了变更
4.5 判断2个数组是否相等
说明:Array数组为引用类型,所以哪怕 []===[] 都会返回false,所以可通过数组toString()方法返回的字符串判断是否相等。
示例:
console.log([]===[]); // => false console.log(['a', 'b'] === ['a', 'b']); // => false console.log(['a', 'b'].toString() === ['a', 'b'].toString()); // true
以上就是本文的全部内容,希望对大家学习javascript Array对象有所帮助。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器