|
1.數(shù)組基礎(chǔ) ① 數(shù)組概念 array是按照一定順序排列的一組值,每個(gè)值都擁有一個(gè)編號(hào),編號(hào)從0開(kāi)始從左向右依次增加 數(shù)組中的元素可以是任何類(lèi)型的數(shù)據(jù),元素之間用逗號(hào)分隔,整個(gè)數(shù)組由方括號(hào)([…])包裹 ?、?數(shù)組本質(zhì) 本質(zhì)上,數(shù)組是對(duì)象類(lèi)型的一種特殊表現(xiàn)形式, 因此,可以使用 new方式創(chuàng)建數(shù)組 示例:var namelist=new Array('Jim','John','Bater'); // ['Jim','John','Bater'] ③ 數(shù)組長(zhǎng)度 JavaScript中的數(shù)組元素可以是任何類(lèi)型的數(shù)據(jù),而在計(jì)算機(jī)內(nèi)存中不同類(lèi)型的數(shù)據(jù)是分區(qū)存儲(chǔ)的,因此,JavaScript中的數(shù)組元素在內(nèi)存中的存儲(chǔ)位置是不連續(xù)的 無(wú)法按照內(nèi)存地址訪(fǎng)問(wèn)數(shù)組元素,所以計(jì)算數(shù)組長(zhǎng)度的時(shí)候只需要計(jì)算數(shù)組元素的個(gè)數(shù)即可,JavaScript通過(guò)使用下標(biāo)的方式對(duì)數(shù)組元素進(jìn)行標(biāo)記,數(shù)組的下標(biāo)則是連續(xù)的 通過(guò) .length屬性計(jì)算數(shù)組長(zhǎng)度,語(yǔ)法:arr . length; length是可寫(xiě)屬性,如果設(shè)置length長(zhǎng)度小于數(shù)組本身長(zhǎng)度,那么多余元素會(huì)被舍棄 如果設(shè)置length長(zhǎng)度大于數(shù)組本身長(zhǎng)度,那么缺少元素用空位補(bǔ)齊 如果設(shè)置length長(zhǎng)度不是合法數(shù)值,那么會(huì)報(bào)錯(cuò)“invalid array length” 示例:var arr=[a,b,c,d]; arr.length=3; console.log(arr.length); //3 console.log(arr); // [a,b,c] console.log(arr[4]); // undefined arr.length=-1; console.log(arr.length); //Uncaught RangeError: invalid array length(…) ?、?nbsp;數(shù)組遍歷 可以使用 for in快速訪(fǎng)問(wèn)數(shù)組中的每一個(gè)元素 示例:var nameArr = ['John','Anna','Hauk']; for (var index in nameArr){ console.log(nameArr[index]); } 返回結(jié)果:John Anna Hauk for in循環(huán)遍歷數(shù)組的時(shí)候,index表示數(shù)組中元素的下標(biāo),是自定義變量 ?、?nbsp;數(shù)組空位 當(dāng)數(shù)組某個(gè)位置是空元素,即兩個(gè)逗號(hào)之間沒(méi)有任何值,則該數(shù)組存在空位(hole) var arr = ['John','','Sami'],示例中間引號(hào)所代表的的元素不屬于空位,空位沒(méi)有任何值(表現(xiàn)為undefined),但空位占據(jù)數(shù)組length長(zhǎng)度 ?、?數(shù)組刪除 delete命令可以刪除數(shù)組中元素的值,從而形成空位,但delete命令并不會(huì)影響 length的屬性 delete命令在使用過(guò)程中,是根據(jù)數(shù)組的下標(biāo)來(lái)鎖定元素進(jìn)行刪除的 語(yǔ)法:delete 變量名[下標(biāo)]; 2.數(shù)組調(diào)用 數(shù)組調(diào)用指的是數(shù)組元素的調(diào)用,通過(guò) “數(shù)組名[下標(biāo)]” 的方式對(duì)數(shù)組元素進(jìn)行訪(fǎng)問(wèn) 數(shù)組元素每次只能訪(fǎng)問(wèn)一個(gè),如果要調(diào)用多個(gè)元素,可以通過(guò)循環(huán)語(yǔ)句進(jìn)行連續(xù)調(diào)用 示例: <html lang="en">
<head>
<meta charset="UTF-8">
<title>Array</title>
<style>
input{
outline: none;
}
</style>
</head>
<body>
<span>名稱(chēng)</span>
<input type="text" id="nameInput">
<button id="submitButton">提交</button>
<script>
var nameInput=document.getElementById("nameInput");
var submitButton=document.getElementById("submitButton");
submitButton.onclick=function () {
var nameStr=nameInput.value;
var nameArr=nameStr.split(",");
for (var i in nameArr){
console.log(nameArr[i]);
}
}
</script>
</body>
</html>
3.數(shù)組方法 ① isArray,判斷變量是否為數(shù)組 如果是數(shù)組返回 true,否則返回 false,使用對(duì)象Array調(diào)用該方法 語(yǔ)法:Array. isArray(變量名); ?、?nbsp;valueOf(),返回?cái)?shù)組本身 該方法歸屬于Object對(duì)象類(lèi)型,作用是返回指定對(duì)象的原始值,在數(shù)組中的作用是返回?cái)?shù)組本身 (很少使用) 語(yǔ)法:數(shù)組名 .valueOf(); JavaScript中許多內(nèi)置對(duì)象都重寫(xiě)了該函數(shù),以便更適合自身的功能需要,因此,不同類(lèi)型對(duì)象的 valueOf方法的返回值和返回值類(lèi)型均有可能不同 ③ toString(),將數(shù)組以字串的形式返回 不僅能夠?qū)?shù)組轉(zhuǎn)換成字符串,布爾值也可以轉(zhuǎn)換,返回值之間默認(rèn)逗號(hào)分隔 語(yǔ)法:數(shù)組名.toString(); ④ push,向數(shù)組末尾追加數(shù)據(jù),返回當(dāng)前數(shù)組的長(zhǎng)度 可以向數(shù)組末尾添加一個(gè)或多個(gè)元素,返回值為追加元素后數(shù)組的長(zhǎng)度length 語(yǔ)法:數(shù)組名 .push('item1', 'item2',…); ★ push方法會(huì)改變?cè)瓟?shù)組內(nèi)容 ?、?nbsp;pop,刪除數(shù)組最后一個(gè)元素 返回值為刪除的這個(gè)元素 語(yǔ)法:數(shù)組名 .pop(); ★ pop方法會(huì)改變?cè)瓟?shù)組內(nèi)容 ?、?nbsp;join,將數(shù)組轉(zhuǎn)換為字符串,默認(rèn)用逗號(hào)隔開(kāi) 以給定的參數(shù)做為分隔符,將數(shù)組轉(zhuǎn)換為字符串,如果不設(shè)置參數(shù),則默認(rèn)使用逗號(hào)分隔 語(yǔ)法:數(shù)組名 .join(' 分隔符 '); ?、?shift(),刪除數(shù)組的第一個(gè)元素 返回值未刪除的這個(gè)元素 語(yǔ)法:數(shù)組名 .shift(); ★ shift方法也會(huì)對(duì)原數(shù)組造成影響 ⑧ unshift(),向數(shù)組前端添加元素 可以向數(shù)組最前端添加一個(gè)或多個(gè)元素,返回值為添加元素后數(shù)組的長(zhǎng)度length 語(yǔ)法:數(shù)組名 .unshift('item1','item2',…); ★ unshift方法也會(huì)對(duì)原數(shù)組造成影響 ?、?reverse,數(shù)組反轉(zhuǎn) 將數(shù)組中元素的順序反向排列 語(yǔ)法:數(shù)組名 .reverse(); //括號(hào)內(nèi)不需要任何參數(shù) ★ reverse方法也會(huì)改變?cè)瓟?shù)組的結(jié)構(gòu) ?、?nbsp;slice,數(shù)組截取 slice方法能夠根據(jù)指定的開(kāi)始和結(jié)束下標(biāo),對(duì)數(shù)組進(jìn)行截取,并生成一個(gè)新的數(shù)組 新數(shù)組的內(nèi)容包括開(kāi)始下標(biāo)對(duì)應(yīng)的元素到結(jié)束下標(biāo)對(duì)應(yīng)的前一個(gè)元素,即不包含結(jié)束下標(biāo)所對(duì)應(yīng)的元素本身 ★ 語(yǔ)法:數(shù)組名 .slice(index1,index2); //返回值未生成的數(shù)組 slice方法的參數(shù)可以是負(fù)數(shù),-1代表最后一個(gè)元素,-2代表倒數(shù)第二個(gè)元素,以此類(lèi)推 如果只寫(xiě)一個(gè)參數(shù),則表示對(duì)從當(dāng)前下標(biāo)對(duì)應(yīng)的元素一直到最后一個(gè)元素進(jìn)行截取 該方法不更改原數(shù)組! ? splice,數(shù)組截取,并且可以插入新的元素(改變?cè)瓟?shù)組) splice方法是根據(jù)指定的下標(biāo)和長(zhǎng)度數(shù),對(duì)數(shù)組進(jìn)行一定長(zhǎng)度的截取,同時(shí)可以根據(jù)增加參數(shù)向數(shù)組中插入一些新元素 返回值為截取元素所構(gòu)成的數(shù)組 語(yǔ)法:數(shù)組名 .splice(index, removeCount, addItem1, addItem2,…); ★ splice方法會(huì)改變?cè)瓟?shù)組的內(nèi)容 方法中插入新元素的參數(shù)不是必須設(shè)置,前兩個(gè)參數(shù)為必須 ? sort,數(shù)組排序 語(yǔ)法:數(shù)組名 .sort(sortby); 排序順序可以按編碼或數(shù)字,并按升序或降序 默認(rèn)按照數(shù)組中元素的編碼進(jìn)行排序,此時(shí)括號(hào)內(nèi)不需要設(shè)置參數(shù) 也可以設(shè)置sortby函數(shù)定義按數(shù)字排序,參數(shù)sortby必須是函數(shù),通過(guò)函數(shù)指定升序或降序 ★ sort方法會(huì)改變?cè)瓟?shù)組的內(nèi)容 ? indexOf,對(duì)數(shù)組進(jìn)行索引 在數(shù)組中從前向后檢索指定元素,返回值為元素在數(shù)組中第一次出現(xiàn)的下標(biāo),如果沒(méi)有檢索到則返回 -1 indexOf方法的第二個(gè)參數(shù)表示從第幾個(gè)元素開(kāi)始檢索,是可選參數(shù) 語(yǔ)法:數(shù)組名 .indexOf(item, beginIndex); 第二個(gè)參數(shù)可以設(shè)置負(fù)數(shù),-1表示從最后一個(gè)(倒數(shù)第一個(gè))元素開(kāi)始向后查找 ? lastIndexOf,反序索引 在數(shù)組中從后向前檢索指定元素,返回值為元素在數(shù)組中最后一次出現(xiàn)的下標(biāo),如果沒(méi)有檢索到則返回-1 lastIndexOf方法的第二個(gè)參數(shù)表示從第幾個(gè)元素開(kāi)始檢索,是可選參數(shù) 語(yǔ)法:數(shù)組名 .lastIndexOf(item, beginIndex); 第二個(gè)參數(shù)可以為負(fù)數(shù),-1表示從最后一個(gè)元素開(kāi)始向前查找 ? concat,用于連接兩個(gè)或多個(gè)數(shù)組 語(yǔ)法:array1 .concat(array2,array3,...); ★ 該方法不會(huì)改變?cè)瓟?shù)組,而僅僅返回連接數(shù)組的一個(gè)副本(新數(shù)組) <script>
var arrOne=[100,200,300,400];
var arrTwo=[500,600,700,800];
var arrTogether=arrOne.concat(arrTwo);
arrTogether.push(10);
arrTogether.unshift(1);
console.log(arrTogether);
</script>
4.二維數(shù)組 如果數(shù)組的元素還是數(shù)組,那么外層數(shù)組就稱(chēng)為二維數(shù)組 語(yǔ)法:var arr=[[array1], [array2], [array3]]; 二維數(shù)組有兩個(gè)下標(biāo),第一個(gè)下標(biāo)表示外層數(shù)組的下標(biāo),第二個(gè)下標(biāo)表示內(nèi)層數(shù)組的下標(biāo),如 arr[1][0]; 二維數(shù)組是數(shù)組的一種特殊形式,數(shù)組的方法對(duì)二維數(shù)組任然生效 5.push、unshift練習(xí) <html lang="en">
<head>
<meta charset="UTF-8">
<title>Array</title>
</head>
<body>
<script>
var arrOne=[100,200,300,400];
var arrTwo=[500,600,700,800];
for (var i in arrTwo){
arrOne.push(arrTwo[i]);
}
arrOne.push(10);
arrOne.unshift(1);
console.log(arrOne);
</script>
</body>
</html>
6.push、pop練習(xí) <html lang="en">
<head>
<meta charset="UTF-8">
<title>Array_push&pop</title>
<style>
input{
outline: none;
}
</style>
</head>
<body>
<span>倉(cāng)庫(kù)</span>
<input type="text" id="storage">
<button id="putIn">入庫(kù)</button>
<button id="takeOut">出庫(kù)</button>
<script>
var storage=document.getElementById("storage");
var goods=[];
storage.value=goods.length;
var putIn=document.getElementById("putIn")
putIn.onclick=function () {
if (storage.value==5){
alert("倉(cāng)庫(kù)已滿(mǎn)!");
}else{
goods.push('貨物');
storage.value=goods.length;
}
}
var takeOut=document.getElementById("takeOut");
takeOut.onclick=function () {
if (storage.value==0){
alert('倉(cāng)庫(kù)已空!');
}else{
goods.pop();
storage.value=goods.length;
}
}
</script>
</body>
</html>
|
|
|
來(lái)自: 路人甲Java > 《待分類(lèi)》