摘要:基本概念可以使用關鍵字創建。調用時傳入一個數組和一個函數,內部過程遍歷數組,并對數組中的每一項調用函數,調用函數的時候會傳入兩個參數,這個數組有項,傳次,每次不一樣的不一樣的。會按照升序排列數組。
Array基本概念
Array可以使用new關鍵字創建 。
var a = new Array(1,2,3,4); === var a = Array(1,2,3,4); === var a = [1,2,3,4];
如果Array接受一個參數,那么這個參數是length的長度;
如果Array接受多個參數,那么就不是length,是一個普通數組。
var a = Array(3) //會生成一個length=3的數組 var a2 = Array(3,3) //[3,3]
數組是特殊的對象,用對象創建數組(如下代碼),那和直接創建數組的區別是:用對象創建的數組沒有數組的原型(公有屬性),也就是說用對象創建數組,它的__proto__直接指向Object的原型,跳過Array的原型。一張圖說明prototype和__proto__的區別
var a = [1,2,3]; var obj = { 0:1, 1:2, 2:3, length:3};forEach、map、filter、reduce
forEach接受一個函數,這個函數接受三個參數(value,key,array),value是array的元素,key是array的索引,array是forEach正在操作的數組(可選)。
如果自己創建一個forEach函數會怎么寫呢?
先自己創建一個forEach函數,它接收兩個參數(array,fn),array是數組,fn是函數;然后在內部遍歷array,同時調用fn函數,并傳入兩個參數(value,key)array的第一項是value,array的索引是key。
function forEach(array,fn){ for(var i = 0; i < array.length; i++){ fn(array[i],i); } } forEach(["aa","bb","cc","dd","ee","ff"].function(value,key){ console.log(value,key); } /* aa 0 bb 1 cc 2 dd 3 ee 4 ff 5 */ })
調用foreach時傳入一個數組和一個函數,內部過程:遍歷數組,并對數組中的每一項調用函數,調用函數的時候會傳入兩個參數(value,key),這個數組有6項,傳6次,每次不一樣的value不一樣的key。
再來看forEach這個API(如下代碼) ,它接受一個函數,這個函數接受兩個參數(value,key),那么它為什么只接受一個函數作為參數了,數組去哪里了?
var a = ["aa","bb","cc","dd","ee","ff"]; a.forEach(function(value,key){console.log(value,key)});
看一下a.forEach內部過程。首先創建一個obj的對象,它內部沒有forEach這個方法,在外面給它強行添加forEach,然后就像普通對象一樣調用forEach就可以了。
var obj = { 0:"a", 1:"b", length:2 }; obj.forEach = function(fn){ for(var i = 0; i < this.length; i++){ fn(this[i],i); } } obj.forEach(function(value,key){console.log(value,key)});
forEach遍歷數組每一項,map和forEach的區別是map有返回值。filter有條見的篩選。
先調用filter篩選出偶數,再調用map乘上2,得出結果
var a = [1,2,3,4,5,6,7,8,9]; a.filter(function(value){ return value % 2 === 0 }).map(function(value2){ return value2 * value2; }); // [4,16,36,64]
用reduce代替map和filter
var a = [1,2,3,4,5,6,7,8,9] a.reduce(function(arr,n){ arr.push(n*2); return arr; },[]); //[2,4,6,8,10,12,14,16,18] a.reduce(function(arr,n){ if(n % 2 === 0){ arr.push(n); } return arr; },[]); //[2,4,6,8,10]sort重排序方法
reverse反向排序數組項,原數組也被逆序了。
sort會按照升序排列數組。
sort可以接受一個比較函數作為參數,可以實現降序排列
var students = ["小明","小紅","小花"]; var scores = { 小明: 59, 小紅: 99, 小花: 80 }; students.sort(function (value1,value2){return scores[value2] - scores[value1]});
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/94956.html
摘要:原始緩沖區的創建通過這個構造函數可以創建一個原始緩沖區從控制臺可以看到實例擁有一個的屬性,用于獲取的,一個只有以及支持的方法,用于對長度進行截取操作。所有數組類型的長度均固定。 本文同步自我的博客園:http://www.cnblogs.com/hustskyking/ 相信每一個 javascript 學習者,都會去了解 JS 的各種基本數據類型,數組就是數據的組合,這是一個很基本...
摘要:反正就是相反的意思了異或當兩者中只有一個那么結果才為。將指定根據的標識轉換成為進制。當創建實例的構造函數時,內部會同時創建一個用來作為數據的存儲。不過,根據上面的構造函數上看,其實,可以將一整個拆成不同的進行讀取。 Web 進制操作是一個比較底層的話題,因為平常做業務的時候根本用不到太多,或者說,根本用不到。 老鐵,沒毛病 那什么情況會用到呢? canvas websocket fi...
閱讀 3209·2023-04-26 02:27
閱讀 2138·2021-11-22 14:44
閱讀 4082·2021-10-22 09:54
閱讀 3195·2021-10-14 09:43
閱讀 748·2021-09-23 11:53
閱讀 12675·2021-09-22 15:33
閱讀 2704·2019-08-30 15:54
閱讀 2681·2019-08-30 14:04