js 陣列,類陣列

2021-08-17 12:53:24 字數 3006 閱讀 6613

1. 陣列 --- 一種特殊的物件

a 會改變原陣列的api---push unshift pop shift splice sort reverse

var arr=[3,5,2,7,1,9,0,3]

//push(需要新增的引數值1,...,引數值n)---向陣列末尾新增元素(可以是多個引數,就是向陣列新增多個元素)

arr.push(56);console.log(arr)//[3,5,2,7,1,9,0,3,56]

//pop()---刪除陣列末尾的元素(傳引數無效,就是剪下最後乙個,因為返回值就是剪下出的結果)

arr.pop();console.log(arr);//[3,5,2,7,1,9,0,3]

//unshift(需要新增的引數值1,...,引數值n)---向陣列首位新增元素(和push一樣,可以傳多個引數)

arr.unshift(4,3);console.log(arr);//[4,3,3,5,2,7,1,9,0,3]

//shift()---剪下掉陣列首位的元素(和pop一樣,傳引數沒用,調一次剪下一次)

arr.shift();console.log(arr)//[3,3,5,2,7,1,9,0,3]

//splice(陣列的第幾位開始擷取,擷取幾位,在切口處新增新的資料)----剪下掉擷取的一段字串,並在截斷的地方新增新的資料

arr.splice(1,3,22,44,55,66);console.log(arr);//[3,22,44,55,66,7,1,9,0,3]

//另外擷取位數可以是0,就是不剪下,只插入,位置根據第n位開始擷取,就在第n位前插入

//sort()---預設按acs碼公升序排序

arr.sort(); console.log(arr);//[0, 1, 22, 3, 3, 44, 55, 66, 7, 9]

//reverse()---翻轉順序

arr.reverse();console.log(arr);//[9, 7, 66, 55, 44, 3, 3, 22, 1, 0]

//例子---sort

//由於很多時候,我們並不需要根據acs碼排序,所以sort提供引數便於操作

arr.sort(function(a,b)

return a-b;//公升序

return b-a;//降序

});//sort從陣列中取a和b是依照氣泡排序的方式---就是從arr中取第一位和第二位比,再和第三位比,比得過(返回正數)就交換,比不過就不動

//例子---氣泡排序

for(var i=0;iarr[j])

}}//氣泡排序原理

//當i=0的時候,是第一輪對比,將最小的數放在了第一位,每次其實就是在找當前位之後的最小的數放在當前位置

//就是拿著i位置的值去當前位置後面找比i位置的值小的數,找到就交換位置,然後拿著i位置上的新數字(比之前的數小,看看後面還有沒有比它還小的,不斷交換就是找最小的)。

//不交換就證明比當前數小,那就肯定比能交換的數大

例子---給你個有序陣列,請你亂序排列:

var arr[1,2,3,4,5,6];

arr.sort(function(a,b))

b. 改變不了原陣列的api---concat slice join

var arr=[1,2,3,7,5,4],arr1=[22];

//陣列1.concat(陣列2)---在陣列1的末尾拼接上陣列2

console.log(arr.concat(arr1),arr); //[1, 2, 3, 7, 5, 4, 22] [1, 2, 3, 7, 5, 4]

console.log(arr1.concat(arr),arr1);//[22, 1, 2, 3, 7, 5, 4] [22]

//slice(從第幾位開始擷取,擷取到第幾位之前的數結束)

console.log(arr.slice(1,2),arr);//[2] [1, 2, 3, 7, 5, 4]

console.log(arr.slice(3),arr); //[7,5,4] [1, 2, 3, 7, 5, 4]

//陣列的這類api都是可以寫負引數的,內部會轉換為length+(負的引數) 然後計算出的位置

console.log(arr.slice(-2),arr);//[5,4] [1, 2, 3, 7, 5, 4]

//陣列以某個東西鏈結

console.log(arr.join('-'),arr); //"1-2-3-7-5-4"

//字串打斷成陣列

var arr3 = arr.join('-');

console.log(arr3.split('-'),arr3); //["1", "2", "3", "7", "5", "4"] "1-2-3-7-5-4"

2. 類陣列:屬性要為索引(數字)屬性,必須有length屬性。最好加上push方法。

另外:乙個物件加上splice方法,就會變成陣列的形式---就是從{}形式變成,但是它依然是物件,只能算是類陣列。

function a()

a(2,3,1);

例子:

var obj=

obj.push("heihei");

console.log(obj); //

obj.length=1;

console.log(obj);//

obj.push('oh my god');

console.log(obj);//

//上面的現象是由於push的內部處理造成的

//obj呼叫push,其實就是在以length的值為名稱的屬性上賦值,並且length+1,也說明了為什麼類陣列必須有length,且必須有索引才有意義

//所以當直接改變了length的值再push,當然就找錯名字了,然後覆蓋了已經有的值。

array.prototype.push=function()

}

js類陣列用法以及類陣列轉陣列的方法

類陣列基本形態,屬性要為索引 數字 屬性,必須有length屬性 最重要 最好加上push。使用起來和陣列一樣,可以使用陣列的方法,但是使用前必須先在類陣列中定義 也可以當成物件使用。儲存資料能力更強。類陣列基本形態,屬性要為索引 數字 屬性,必須有length屬性 最重要 最好加上push 使用起...

js之陣列,物件,類陣列物件

陣列定義 簡而言之就是一組有序的資料集合,其索引為從0開始且自然增長的整數,其元素值可以是任何js資料!並且包含乙個名為length的屬性,該屬性表示陣列元素的個數!看著上面的定義,我們很容易就能大概知道陣列是什麼樣的東西,下面我們來看個簡單的例子 vararray 1,2,3 console.lo...

js 陣列和類陣列的區別

類陣列定義 1 擁有length屬性,其它屬性 索引 為非負整數 物件中的索引會被當做字串來處理 2 不具有陣列所具有的方法 類陣列轉換為陣列 args array.prototype.slice.call arguments 類陣列轉換為陣列首先array.prototype.slice.call...