JavaScript中的陣列

2021-08-28 07:52:02 字數 3707 閱讀 4131

1.1基本資料型別:以number型別為例

number(***)      //報錯,error: *** is not defined

number('***') //nan,nan是非數值,乙個特殊的數值

number(1) //1 乙個單純的數字

number('1') //1 乙個單純的數字

new number(1) //number,乙個物件,具有物件方法

也就是說number()建立的是基本資料型別,new number()建立的是乙個物件,同理string,boolean。

1.2複雜資料型別:object

object('x')           //  string ,乙個物件   (非數字一定要加引號)

new object('x') // string ,乙個物件

對於複雜型別object來說,兩者方法是一樣的,都是建立的物件。

ecmascript陣列和其他語言的陣列一樣,都是資料的有序列表,和其他語言不同的是js中的陣列的每一項都可以儲存任何資料型別,且陣列大小可以動態調整,即隨著資料的新增自動增長以容納新資料。

在js中,陣列的本質是原型鏈中有array.prtotype的物件。

let obj =                    // 看起來像陣列,但沒有array.prototype的,是偽陣列

a = [1, 2] // 是真的陣列,有array.prototype,也就是說有pop和push方法

常見偽陣列:arguments,dom api獲得的陣列:nodelist

3.1 for的兩種遍歷

首先我們定義乙個複雜的陣列:

var obj = 

var a = [1, 2, 'x', obj, 5, 'b'] // a是乙個陣列

第一種for遍歷:

for (let i=0; i3.2 foreach的遍歷

foreach是接受乙個函式為引數的api

a.foreach( function(x,y))

4.1 join 連線成乙個字串返回
a = [1, 2, 3]

a.join() <=> a.join(',') // 字串 "1, 2, 3"

a.join('嘿嘿') // 字串 "1嘿嘿2嘿嘿3"

a + '' // 字串 "1, 2, 3"

a.tostring() // 字串 "1, 2, 3"

4.2 concat 聯結陣列
var a = [1,2,3];  var b = [3,4,5];

var c = a.concat(b); //'1,2,3,3,4,5'

var d = a.concat(); //'1,2,3',將a陣列深拷貝給d陣列

4.3 map 對映,有返回值的陣列遍歷
var a = [1,2,3];

a.map(function(value,key)) //[2,4,6];

a.map(value => value * 2); //[2,4,6]

4.4 filter 過濾陣列
var a = [1,2,3,4,5];

a.filter(function(value,key)) //[3,4,5]

a.filter(function(value,key)) //返回偶數,[2,4]

4.5 sort 排序,reverse 反轉陣列

這兩個api都會 改變原陣列

var c = [2,3,1];

c.sort(); // [1,2,3],預設從小到大排序

c // [1, 2, 3]

c.sort(function(a,b)) // [3,2,1],從大到小排序

c.reverse() // [3, 2, 1] 因為sort已經更改了原陣列了,所以不是返回 [1, 3, 2]

4.6 reduce 歸併方法

迭代陣列中的所有項,構建乙個最終的返回值

4.6.1 reduce實現map方法

a = [2, 4, 6]

a.reduce(function(arr,n),)

// 2 的值賦給了arr,當前值n是2

// [4] 4

// [4, 8] 6

// [4, 8 ,12] 這是return返回的陣列arr

4.6.2 reduce實現filter方法
a.reduce(function(arr,n)

return arr;

},)

4.6.3 reduce實現陣列求和
var total = [ 0, 1, 2, 3 ].reduce(

( acc, cur ) => acc + cur

); // total === 6

4.6.4 reduce實現陣列去重
let arr = [1,2,1,2,3,5,4,5,3,4,4,4,4];

let result = arr.sort().reduce((init, current)=>

return init;

}, );

console.log(result); //[1,2,3,4,5]

es6實現陣列去重:

let array = array.from(new set([1,2,1,2,3,5,4,5,3,4,4,4,4]));  

//set資料結構,類似於陣列,但是它成員都是唯一的

//靜態方法array.from,可以把類似陣列的物件轉換為陣列

console.log(array); //[1,2,3,4,5]

4.6.5 reduce實現陣列計數

計算字串中每個元素出現次數:

var arrstring = 'abcdaabc1331';

arrstring.split('').reduce(function(res, cur) , {}) // ,空元素也是可以計算的

4.7 splice 陣列的刪除,插入與替換操作

splice方法會 改變原陣列

splice方法始終會返回乙個包含從原始陣列中刪除的項,沒有刪除就返回空陣列

arr.splice(開始位置,刪除個數 ) //從開始位置刪除,執行後arr陣列已改變,arr.splice返回刪除項

arr.splice(開始的位置, 刪除的個數, 插入的資料1, 插入的資料2, 3...)

4.8 slice 基於當前陣列建立新陣列

不改變原陣列

array.slice()  //或array.slice(0),返回完整陣列

array.slice(4) //返回位置4到最後的資料

array.slice(4,8) //返回位置4到7的資料

JavaScript中的陣列

陣列 引數 返回值原陣列是否改變 1 向陣列尾部新增push 引數可以是乙個或多個 返回值是新增後陣列的長度 原陣列改變 2 刪除陣列的最後一項pop 沒有引數 返回值是刪除的那個數 原陣列改變 3 向陣列的頭部新增unshift 引數可以是乙個或多個 返回值是新增後陣列的長度 原陣列改變 4 刪除...

JavaScript中的陣列

陣列的宣告 宣告乙個陣列裡面是abc,宣告乙個空陣列物件 var arr1 newarray arr1 0 abc alert arr1 宣告乙個陣列長度是5,宣告乙個具有一定長度length的陣列 var arr2 newarray 5 alert arr2.length 宣告乙個陣列裡面有1 2...

javaScript 陣列中的方法

1 join 方法 array.join 方法可以把乙個陣列的所有元素轉換成字串,然後再把他們連線起來,可以指定乙個可選的字元來分隔結果字串中的元素。如果沒有指定分隔符,那麼就預設為逗號分隔元素。例如 var a var b a.join b 1,2,3 var b a.join b 1 2 3 2...