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...