有哪些創(chuàng)建數(shù)組的方法?
js創(chuàng)建數(shù)組有以下三種方法:
- 隱式創(chuàng)建
var arr = ['elem1','elem2','elem3'];
- 直接實(shí)例化
var arr = new Array('elem1','elem2','elem3')
- 創(chuàng)建數(shù)組并給數(shù)組元素賦值
var arr = new Array();
arr[0] = 'elem1';
arr[1] = 'elem2';
arr[2] = 'elem3';
- 創(chuàng)建一個(gè)長(zhǎng)度為3的數(shù)組
var arr = new Array(3);
遍歷數(shù)組
A.
var weekdays = ['Tue','Wen','Thur'];
for(let key in weekdays){
console.log(key,weekdays[key]);
}
B.
var weekdays = ['Tue','Wen','Thur'];
for(let i = 0;i < weekdays.length;i++){
console.log(i,weekdays[i]);
}
C.
var weekdays = ['Tue','Wen','Thur'];
weekdays.forEach(items=>{console.log(items);});
關(guān)于數(shù)組的重要屬性
arr.length
返回?cái)?shù)組長(zhǎng)度
關(guān)于數(shù)組的重要方法
forEach()
解釋:
循環(huán)遍歷數(shù)組
語(yǔ)法:
arr.forEach(function(currentValue, index, arr), thisValue)
- currentValue:必填粗蔚,當(dāng)前元素众雷。
- index:可選蒙兰,當(dāng)前元素的索引扇住。
- arr:可選,當(dāng)前元素所屬的數(shù)組對(duì)象缝其。
- thisValue:可選,傳遞給函數(shù)的值一般用this值徘六,如果這個(gè)參數(shù)為空内边,"undefined"會(huì)傳遞給"this"值。(這個(gè)參數(shù)一般很少填)
- 可以利用
return
跳過(guò)循環(huán)中的某一次迭代
pop()
解釋:
刪除數(shù)組最后一個(gè)元素并作為返回值返回待锈,數(shù)組長(zhǎng)度會(huì)因此減1,返回值類型取決于刪除的元素類型.
語(yǔ)法:
arr.pop()
shift()
解釋:刪除數(shù)組第一個(gè)元素并作為返回值返回漠其,數(shù)組長(zhǎng)度會(huì)因此減1.常用于while
循環(huán)中,依次打印輸出數(shù)組中的元素并清空數(shù)組,返回值類型取決于刪除的元素類型.
語(yǔ)法:
arr.shift()
push()
解釋:給原數(shù)組末尾添加一個(gè)或多個(gè)元素和屎,返回值為添加元素后數(shù)組的長(zhǎng)度拴驮,為number
類型.
語(yǔ)法:
arr.push(element1[, ...[, elementN]])
unshift()
解釋:給原數(shù)組開頭添加一個(gè)或多個(gè)元素,返回值為添加元素后數(shù)組的長(zhǎng)度柴信,為number
類型.
語(yǔ)法:
arr.unshift(element1[, ...[, elementN]])
join()
解釋:將數(shù)組中元素組合成為一個(gè)字符串套啤,返回值對(duì)應(yīng)組合的字符串,為string
類型
語(yǔ)法:
arr.join([separator])
- separator:用來(lái)分隔數(shù)組中的每個(gè)元素随常,如果為空潜沦,則組合成的字符串會(huì)默認(rèn)把原始的數(shù)組中每個(gè)元素用
,
隔開。
reverse()
解釋:在原數(shù)組上操作绪氛,將原數(shù)組中元素逆序,返回值為逆序操作后的數(shù)組
語(yǔ)法:
arr.reverse()
slice()
解釋:不改變?cè)瓟?shù)組唆鸡,淺拷貝的方式截取原數(shù)組的一部分,返回值為截取下來(lái)的部分,為數(shù)組類型.
語(yǔ)法:
arr.slice([begin[, end]])
- begin 開始截取的位置枣察,默認(rèn)值為
0
争占,即從數(shù)組最開始截取 - end 停止截取的位置的后一位,默認(rèn)值為
arr.length
序目,即截取到數(shù)組末尾 - 對(duì)
beign
和end
其值可以為負(fù)數(shù)燃乍,代表倒數(shù)第幾個(gè)元素
splice()
解釋:在原數(shù)組上操作,替換/刪除原數(shù)組的部分元素宛琅,并插入一個(gè)或多個(gè)新元素刻蟹,返回值為被替換/刪除掉的元素。如果被替換/刪除掉多個(gè)元素嘿辟,則返回被刪除掉的子數(shù)組舆瘪;如果沒(méi)被刪除/替換掉任何元素,則返回空數(shù)組红伦。
語(yǔ)法:
var arrDeletedItems = array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
- start 開始替換/刪除的位置
- deleteCount 從開始位置數(shù)起英古,總共替換/刪除掉元素的個(gè)數(shù)
- item 需要插入的新元素,如果為空則不添加任何新元素
[Exercise] 用splice()
編寫一個(gè)函數(shù)昙读,實(shí)現(xiàn)數(shù)組元素交換位置
/* exercise for splice() */
function swapArray(arr, index1, index2) {
arr[index1] = arr.splice(index2, 1, arr[index1])[0];
return arr;
}
sort()
解釋:在原數(shù)組上操作召调,對(duì)原數(shù)組進(jìn)行排序,默認(rèn)為將數(shù)組元素轉(zhuǎn)化為字符串后蛮浑,比較對(duì)應(yīng)字符串的UTF-16
編碼值唠叛,升序排序。返回值為排序后的數(shù)組沮稚。
語(yǔ)法:
arr.sort([compareFunction])
- compareFunction(a, b): 該函數(shù)為用戶自定義艺沼,包含兩個(gè)參數(shù)
a
,b
.sort()
方法會(huì)調(diào)用該用戶自定義函數(shù)來(lái)排序,且如何排序取決于該函數(shù)的返回值蕴掏。如果返回值為負(fù)障般,則a
的位置要比b
靠前调鲸;如果返回值為正,則a
的位置比b
靠后;如果返回值為0,則a
,b
相對(duì)位置保持不變挽荡。
reduce()
解釋:對(duì)數(shù)組的每個(gè)元素遍歷執(zhí)行reducer
函數(shù)藐石,并只返回一個(gè)值。
語(yǔ)法:
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
- callback: 回調(diào)函數(shù)定拟,在特定的事件或條件發(fā)生時(shí)由另外的一方調(diào)用的贯钩,用于對(duì)該事件或條件進(jìn)行響應(yīng),因?yàn)槭褂么撕瘮?shù)可以把調(diào)用者與被調(diào)用者分開办素,所以調(diào)用者不關(guān)心誰(shuí)是被調(diào)用者角雷。它只需知道存在一個(gè)具有特定原型和限制條件的被調(diào)用函數(shù)。簡(jiǎn)而言之性穿,回調(diào)函數(shù)就是允許用戶把需要調(diào)用的函數(shù)的指針作為參數(shù)傳遞給一個(gè)函數(shù)勺三,以便該函數(shù)在處理相似事件的時(shí)候可以靈活的使用不同的方法,即把函數(shù)作為參數(shù)使用的函數(shù)需曾。
Callback Explained - accumulator: 累計(jì)的回調(diào)函數(shù)的返回值
- currentValue: 當(dāng)前在被回調(diào)函數(shù)處理的數(shù)組元素
- index: 當(dāng)前在被回調(diào)函數(shù)處理的數(shù)組元素的數(shù)組下標(biāo)
- array: 被處理的數(shù)組
- initialValue: accumulator的初始值吗坚,如果用戶不提供,則會(huì)把數(shù)組第一個(gè)元素作為初始值呆万,并且回調(diào)函數(shù)會(huì)從第二個(gè)元素開始處理商源。
map()
解釋:用回調(diào)函數(shù)依次處理原數(shù)組的每一個(gè)元素,并返回處理后的新數(shù)組.將被map()
處理的元素范圍在第一次調(diào)用回調(diào)函數(shù)之前便已經(jīng)確定.
語(yǔ)法:
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
- currentValue: 當(dāng)前在被回調(diào)函數(shù)處理的數(shù)組元素
- index: 當(dāng)前在被回調(diào)函數(shù)處理的數(shù)組元素的數(shù)組下標(biāo)
- array: 被處理的數(shù)組
- this: 回調(diào)函數(shù)的
this
值