一、數(shù)組的定義
? ? ? ? 數(shù)組的標(biāo)準(zhǔn)定義:一個存儲元素的線性集合,元素可以通過索引來任意存取,索引通常是數(shù)字,用來計(jì)算元素之間存儲位置的偏移量,幾乎所有的編程語言都有類似的數(shù)據(jù)結(jié)構(gòu),而JavaScript的數(shù)組略有不同。
? ? ? ? JavaScript中的數(shù)組是一種特殊的對象,用來表示偏移量的索引是該對象的屬性,索引可能是整數(shù)。然而,這些數(shù)字索引在內(nèi)部轉(zhuǎn)換為字符串類型,這是因?yàn)镴avaScript對象中的內(nèi)部屬性必須是字符串。數(shù)組在JavaScript中只是一個特殊的對象,所以效率不如其他語言效率高。
? ? ? ?JavaScript中的數(shù)組,嚴(yán)格來說應(yīng)該稱作對象,是特殊的JavaScript對象,在內(nèi)部歸類為數(shù)組。由于Array在JavaScript中被當(dāng)為對象,因此他有很多屬性和方法可以在編程中使用。
二、數(shù)組的使用
? ? 1. 創(chuàng)建數(shù)組
? ? ? ? ? 最簡單的方式就是 []操作符來聲明一個數(shù)組變量
var nums = []
print(numbers.length); // 顯示 0
---------分割線------------
var nums = [1,2,3,4,5]
print(numbers.length); // 顯示 5
? ? ? ? ? 還可以調(diào)用Array的構(gòu)造函數(shù)來創(chuàng)建一個數(shù)組
var nums = new Array()
print(numbers.length); // 顯示 0
--------------分割線------------------
var nums = new Array(1,2,3,4,5)
print(numbers.length); // 顯示 5
? ? ? ? ?而且 數(shù)組中的元素不必是同一種數(shù)據(jù)類型
var nums = [1,'a','b',2,4]
? ? ? ? ?可以使用Array.isArray()判斷是否是數(shù)組
let n = 1
let nums = [1,2,'a','b']
pint(Array.isArray(n)) // false
pint(Array.isArray(nums)) // true
? ? ? ? 大多數(shù)數(shù)JavaScript專家推薦 [ ]
操作符 來創(chuàng)建數(shù)組 因?yàn)樾矢?/p>
?2.讀寫數(shù)組
? ? ? 在一條賦值語句中可以使用? [ ] 操作符將數(shù)據(jù)賦值給數(shù)組,比如將 1-100賦值給數(shù)組:
var nums = []
for(let i=0,i<100,i++){
nums[i] = i + 1
}
? ? ?還可以用 [ ] 操作符進(jìn)行讀取數(shù)組的中元素
var nums =[5,4,3,2,1];
vat sum = nums[0]+nums[1]+nums[2]+nums[3]+nums[4];
pint(sum) // 15
? ? JavaScript中 數(shù)組也是對象,數(shù)組的長度可以是任意長度,超出其創(chuàng)建時的指定長度。length屬性反映的是當(dāng)前數(shù)組元素的個數(shù),使用它可以確保循環(huán)遍歷了數(shù)組中的所有的元素。
3. 由字符串生成素組
? 調(diào)用字符串對象的方法 split()方法可以生成數(shù)組,
var str = 'zhong guo hong shi zui mei de yan se'
var arr = str.split(" ") // 以空格分隔
log(arr) // ['zhong','guo','hong','shi','zui'.'mei','de','yan','se']
4. 對數(shù)組的整體性操作
? ? ?淺拷貝:把一個數(shù)組賦給另外一個數(shù)組,只是為被賦值的數(shù)組添加了一個新的引用,當(dāng)你通過原引用修改了數(shù)組的值,那么另一個引用數(shù)組也會變化:
var nums = [1,2,3,4,5]
var samenums = nums
nums[0] = 6
pint(samenums[0]) // 6
深拷貝:將數(shù)組中的元素都復(fù)制一份到新數(shù)組中:
function copy(arr1,arr2){
for(var i =0;i< arr1.length; i++){
arr2[i] = arr1[i]
}
}
var nums = [1,2,3,4,5,6]
var sameNums = [];
copy(nums,sameNums);
nums[0] = 9;
pint(sameNums[0]) // 1
三.存取函數(shù)
1.查找元素?
? indexOf() 是最常用的存取函數(shù)之一,用來查找傳進(jìn)來的參數(shù)在數(shù)組中是否存在,如果存在 返回索引,如果不存在就返回 -1
var nums = [1,2,3,4,'a',5]
var n = nums.indexOf('a')
pint(n) // 4
var n = nums.indexOf('b')
pint(n) // -1
如果數(shù)組中有多個相同的元素,那么indexOf() 就會返回第一個元素的索引,
lastIndexOf()? 正好相反 ,如果有多個相同元素,就會返回最后一個元素的索引;
2.數(shù)組的字符串表示
?有兩個方法可以將數(shù)組轉(zhuǎn)為字符串: join()和toString(),這個兩個方法都會返回數(shù)組的所有元素的字符串,各個元素之間以逗號隔開。文章來源:http://www.zghlxwxcb.cn/news/detail-423843.html
3.由已有數(shù)組創(chuàng)建新的數(shù)組文章來源地址http://www.zghlxwxcb.cn/news/detail-423843.html
到了這里,關(guān)于JavaScript數(shù)據(jù)結(jié)構(gòu)與算法整理------數(shù)組的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!