摘要:可以模仿棧和隊的進入方式隊先進先出隊后進后出棧后進先出棧先進后出將數組以特定字符串連接,并返回字符串,默認以逗號連接。如數組成員為空位,或這三者將以空串代替。改變原數組排列方式會改變原數組,進行升序和降序。
數組篇 定義方式
通過構造函數,new一個array,可以填寫參數,一般除數字外不建議填
let arr = new Array(); let arr1 = new Array(3); //代表length為3,鍵值都是空位 0 in arr1; //false,因為是空位,所以不存在索引,數組會忽略尾部逗號
通過字面量定義
let arr = [1,2,3,4,5,56]數組類型判定
typeof,不建議,最客觀也只返回object
let arr = [1,2]; typeof arr //object
instanceof,不是最佳,原因是instanceof的原理是通過原型鏈判斷兩邊是否相等,但是在多框架下,a框架下的數組原型在b框架下就不一定了
arr instanceof Array; //true a instanceof b; //a.__proto__.proto__.... === b.prototype;a通常為對象,b為構造函數
Array.isArray(),能解決第二種的問題
Array.isArray(arr); //true數組屬性-length
增加數組長度
let arr = [1,2,3]; arr.length = 4; 3 in arr; //false arr[3] = undefined; //能增加length值,鍵值為undefined 3 in arr; //true,
減少數組長度
let arr = [1,2,3]; arr.length = 2; console.log(arr[2]); //undefined arr.length = 0; //最簡單的清空方式,[]數組方法
valueof(),toString(),通常用于數組對象轉換成別的數據類型,arr.valueof().toString()
push,pop,shift,unshift,4種方法都能改變原數組,前兩個速度快,因為檢索位置是尾部,后兩者是首部。可以模仿棧和隊的進入方式:
隊先進先出:
let arr = []; arr.push(1); arr.push(2); //[1,2] arr.shift() //[2]
隊后進后出:
let arr = []; arr.unshift(1); arr.unshift(2); //[2,1] arr.pop(); //[2]
棧后進先出:
let arr = []; arr.unshift(1); arr.unshift(2); //[2,1] arr.shift(); //[1]
棧先進后出:
let arr = []; arr.push(1); arr.push(2); //[1,2] arr.pop(); //[1]
join(),將數組以特定字符串連接,并返回字符串,默認以逗號連接。如數組成員為空位,undefined或null,這三者將以空串代替。
let arr = [,undefined,null]; arr.join(";"); //;; let arr1 = [1,,2]; arr1.join("."); //1..2
concat(),將括號內參數與原數組進行拼接,返回新數組,原數組不變,參數類型不固定個數不固定。是淺拷貝,如參數為對象拷貝的是索引。
let arr = [1]; let obj = {a: 2}; let new_arr = arr.concat("123",obj); obj.a = 3; console.log(new_arr); //[1, "123", {a: 3}]
sort(), reverse(),改變原數組排列方式(會改變原數組),進行升序和降序。它是先將元素轉為字符串,按首個字符的u碼進行排列,這就導致排列出錯。sort()可以添加傳入一個函數作為參數,將排序進行改進
let arr = [1, 2, 12, 3, 4]; arr.sort(); //[1, 12, 2, 3, 4]
let arr = [1, 2, 12, 3, 4]; arr.sort(function (a, b) { return a - b; //<0,在前;>0,在后;=0不變; }); console.log(arr); //[1, 2, 3, 4, 12],
slice()與splice(),
slice(start, end),類似切片截取,返回截取的新數組,原數組不變,兩個參數前閉后開,是淺拷貝
splice(start, count, addElement1, addElement2, ...),從start開始刪除,數量為count,接著添加后面的元素; 若填寫一個參數則 count默認length-arg-1,即刪到末尾;返回被刪除的數組,原數組改變
let arr = [1, 2, 3, 4, 5]; arr.slice(); //[1, 2, 3, 4, 5] arr.slice(1, -1); //[2, 3, 4] arr.slice(0, 5); //[1, 2, 3, 4, 5] arr.slice(2, 1); //error, 前者不能大于后者(同+-符號)
let arr = [1, 2, 3, 4]; let del = arr.splice(1, 3, "345", 67); console.log(arr); //[1, "345", 67] console.log(del); //[2, 3, 4] let arr1 = [1, 2, 3, 4, 5]; arr1.splice(1); console.log(arr1); //[1]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98133.html
摘要:幾乎所有的編程語言都有類似的數據結構。然而的數組卻略有不同。沒有定義中說的那樣的數據結構,作為替代。元素通過指定的分隔符進行分隔。返回該對象的源代碼。把數組轉換為本地數組,并返回結果。 寫在前面的話: 經常看到技術博客上寫的內容很詳細,對于一個問題,大家的博客內容似乎都是一樣的。不難發現這些技術博客已經成為各路教程的匯總地,而教程一般都是參考國外博客翻譯或者直接在經典的書籍上大片抄錄。...
摘要:專題系列共計篇,主要研究日常開發中一些功能點的實現,比如防抖節流去重類型判斷拷貝最值扁平柯里遞歸亂序排序等,特點是研究專題之函數組合專題系列第十六篇,講解函數組合,并且使用柯里化和函數組合實現模式需求我們需要寫一個函數,輸入,返回。 JavaScript 專題之從零實現 jQuery 的 extend JavaScritp 專題系列第七篇,講解如何從零實現一個 jQuery 的 ext...
摘要:不過讓流行起來的原因應該是是目前所有主流瀏覽器上唯一支持的腳本語言。經過測試,數字字符串布爾日期可以直接賦值,修改不會產生影響。再考慮對象類型為或者的情況。對于結果聲明其類型。判斷對象的類型是還是,結果類型更改。 轉載自我的個人博客 歡迎大家批評指正 1. 第一個頁面交互 這里最需要學習的老師的代碼中,每一部分功能都由函數控制,沒有創建一個全部變量。且最后有一個函數來控制執行代碼...
摘要:調用堆棧是存放原始數據類型的地方除了函數調用之外。上一節中聲明變量后調用堆棧的粗略表示如下。解釋改變的正確方法是更改內存地址。在聲明時,將在調用堆棧上分配內存地址,該值是在堆上分配的內存地址。 這是專門探索 JavaScript 及其所構建的組件的系列文章的第 21 篇。 想閱讀更多優質文章請猛戳GitHub博客,一年百來篇優質文章等著你! 如果你錯過了前面的章節,可以在這里找到它們:...
摘要:屬性是一個值或一組值以數組或對象的形式,是對象的成員。可以使用內置構造函數和創建包裝對象。因此下面的代碼將會使人很迷惑結果結果,此數組長度為應該盡量避免使用數組構造函數創建新數組。給數組對象添加返回數組中最大元素值的方法。 對象部分 Object類型 Object 是一個無序的集合,可以存放任意類型對象,所有其他對象都繼承自這個對象。創建Object類型有兩種,一種是使用new運算符,...
摘要:與稀疏數組對立的為密集數組,密集數組的索引會被持續的創建,并且其元素的數量等于其長度。創建一個長度為的數組,并初始化了個元素使用構造函數創建數組對象的時候,關鍵字是可以省略的。另外使用和刪除元素是影響數組的長度的。 說明:本文只總結了JavaScript數組在web端的行為,不包括NodeJs端的行為。本文不涉及類型化數組(TypedArray)的討論、總結。 一、什么是數組 數組的定...
閱讀 3486·2021-10-18 13:30
閱讀 2941·2021-10-09 09:44
閱讀 1964·2019-08-30 11:26
閱讀 2288·2019-08-29 13:17
閱讀 757·2019-08-29 12:17
閱讀 2246·2019-08-26 18:42
閱讀 471·2019-08-26 13:24
閱讀 2951·2019-08-26 11:39