1.創(chuàng)建數(shù)組
let arr = ['apple', 'banana'];
console.log(arr, '---------訪問數(shù)組'); //[ 'apple','banana' ]
2.通過索引訪問元素
let arr = ['apple', 'banana'];
let first = arr[0];
console.log(first, '----通過索引訪問數(shù)組'); //'apple'
console.log(arr[arr.length - 1], '-------訪問數(shù)組中最后一位元素') //'banana'
3.遍歷數(shù)組
let arr = ['apple', 'banana'];
arr.forEach((item, index, array) => {
console.log(item, '------item') //'apple' 'banana'
console.log(index, '------index') // 0,1
console.log(array, '-----array') //['apple','banana']
})
4.push() 添加元素到數(shù)組末尾
let arr = ['apple', 'banana'];
arr.push('orange');
console.log(arr, '----添加元素到數(shù)組末尾'); // ['apple', 'banana', 'orange' ]
5.pop() 刪除數(shù)組末尾元素
let arr = ['apple', 'banana','orange'];
arr.pop();
console.log(arr, '----刪除數(shù)組末尾元素'); //['apple', 'banana']
6.shift() 刪除數(shù)組最前面的元素
let arr = ['apple', 'banana'];
arr.shift();
console.log(arr, '----刪除數(shù)組最前面的元素') //[ 'banana' ]
7.unshift() 添加元素到數(shù)組的頭部
let arr = ['banana'];
arr.unshift('eggs');
console.log(arr, '----添加元素到數(shù)組的頭部') //[ 'eggs', 'banana' ]
8.indexOf() 查看某個(gè)某個(gè)元素在數(shù)組中的位置,存在就是當(dāng)前下標(biāo),如果不存在就為-1;
let arr = [ 'eggs','banana'];
let index = arr.indexOf('banana');
console.log(index, '------查看某個(gè)某個(gè)元素在數(shù)組中的位置黄琼;') //1
//--------------------
let index1 = arr.indexOf('watermelon');
console.log(index1, '------查看某個(gè)某個(gè)元素在數(shù)組中的位置;') //-1
9.splice是數(shù)組中最強(qiáng)大的功能之一相寇,增,刪钮科,改
let arr = [ 'eggs','banana'];
splice(index,howmany,string1,string2)
//index整數(shù)唤衫,規(guī)定添加/刪除項(xiàng)目的位置,使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置,end要?jiǎng)h除的項(xiàng)目數(shù)量绵脯。如果設(shè)置為 0佳励,則不會刪除項(xiàng)目。string1,string2是插入或替換的元素
arr.splice(0, 1, 'grapes'); //在0的位置刪除一個(gè)元素蛆挫,并且加入一個(gè)元素 赃承,刪除插入
console.log(arr,'------') //[ 'grapes', 'banana' ] '------'
arr.splice(1, 2, 'fruits'); //在下標(biāo)為1的位置插入2個(gè)元素,如果后面只傳了一個(gè)就插入一個(gè)
console.log(arr,'------') //[ 'grapes', 'fruits' ] '------'
arr.splice(2, 2, 'fruits', 'fruits'); //在下標(biāo)為2的位置插入2個(gè)元素
console.log(arr,'------') //[ 'grapes', 'fruits' ] '------'
arr.splice(0, 1); //刪除元素
console.log(arr, '---通過索引刪除某個(gè)元素')
- splice() 方法可刪除從 index 處開始的零個(gè)或多個(gè)元素悴侵,并且用參數(shù)列表中聲明的一個(gè)或多個(gè)值來替換那些被刪除的元素瞧剖。
- 如果從 arrayObject 中刪除了元素,則返回的是含有被刪除的元素的數(shù)組可免。
- 該方法會改變原始數(shù)組
10.slice 不會改變原數(shù)組()
let arr=[ 'fruits', 'fruits', 'fruits' ];
let copyArr = arr.slice(); //拷貝數(shù)組
console.log(copyArr) //[ 'fruits', 'fruits', 'fruits' ]
let sliceArr = arr.slice(0, 1); //獲取元素
console.log(sliceArr) //[ 'fruits' ]
slice( start,end ) 方法可從已有的數(shù)組中返回選定的元素抓于。
返回一個(gè)新的數(shù)組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素浇借。
該方法并不會修改數(shù)組捉撮,而是返回一個(gè)子數(shù)組。如果想刪除數(shù)組中的一段元素逮刨,應(yīng)該使用方法 Array.splice()呕缭。
11.Array.from() 方法從一個(gè)類似數(shù)組或可迭代對象中創(chuàng)建一個(gè)新的數(shù)組實(shí)例堵泽。
const bar = ['a', 'b', 'c'];
Array.from(bar);
const foo = Array.from('foo');
console.log(foo); //[ 'f', 'o', 'o' ]
- es6新特性中Array類多了一個(gè)靜態(tài)方法from
12.Array.isArray() 用于確定傳遞的值是否是一個(gè) Array修己。
console.log(Array.isArray([1, 2, 3])) //true
console.log(Array.isArray('str')) //false
console.log(Array.isArray({ 'foo': '1' })) //false
console.log(Array.isArray(null)) //false
console.log(Array.isArray(undefined)) //false
13.Array.of() 方法創(chuàng)建一個(gè)具有可變數(shù)量參數(shù)的新數(shù)組實(shí)例
console.log(Array.of(5)) //[5] 創(chuàng)建一個(gè)數(shù)組為[5]
console.log(Array.of(1, 2, 3)) //[1,2,3]
console.log(Array.of(1, [1, 23], 3)) //[ 1, [ 1, 23 ], 3 ]
14.concat() 方法用于合并兩個(gè)或多個(gè)數(shù)組恢总。此方法不會更改現(xiàn)有數(shù)組,而是返回一個(gè)新數(shù)組睬愤。
let array1 = ['a', 'b'];
let array2 = ['1', '2'];
let array3 = [].concat(array1, array2);
console.log(array3) //[ 'a', 'b', '1', '2' ]
15.array.copyWithin(target, start, end)
- target 必需片仿。:從該位置開始替換數(shù)據(jù)。
- start 必需尤辱。從該位置開始讀取數(shù)據(jù)砂豌,默認(rèn)為 0 。如果為負(fù)值光督,表示倒數(shù)阳距。
- end 可選。到該位置前停止讀取數(shù)據(jù)结借,默認(rèn)等于數(shù)組長度筐摘。如果為負(fù)值,表示倒數(shù)船老。 (默認(rèn)為 array.length)
*es6 特性
let copyWithinArr = ["alpha", "beta", "copy", "delta"].copyWithin(1, 2, 3);
1=='beta'
2=='copy'
3=='delta'
console.log(copyWithinArr) // [ 'alpha', 'copy', 'copy', 'delta' ]
let copyWithinArr1 = ["alpha", "beta", "copy", "delta"].copyWithin(2, 0);
console.log(copyWithinArr1) //[ 'alpha', 'beta', 'alpha', 'beta' ]
16.entries() 方法返回一個(gè)新的Array Iterator對象(可迭代對象)咖熟,該對象包含數(shù)組中每個(gè)索引的鍵/值對。迭代對象中數(shù)組的索引值作為 key柳畔, 數(shù)組元素作為 value馍管。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.entries();
var entries = ["a", "b", "c"];
var iterator = entries.entries();
console.log(iterator, '---')
console.log(iterator.next().value, '---')
console.log(iterator.next())
var iter = entries.entries();
var a = [];
// for(var i=0; i< arr.length; i++){ // 實(shí)際使用的是這個(gè)
for (var i = 0; i < arr.length + 1; i++) { // 注意,是length+1薪韩,比數(shù)組的長度大
var tem = iter.next(); // 每次迭代時(shí)更新next
console.log(tem.done); // 這里可以看到更新后的done都是false
if (tem.done !== true) { // 遍歷迭代器結(jié)束done才是true
console.log(tem.value);
a[i] = tem.value;
}
}
console.log(a); // [ [ 0, 'a' ], [ 1, 'b' ], [ 2, 'c' ] ] 遍歷完畢确沸,輸出next.value的數(shù)組
- keys()方法返回一個(gè)新的Array迭代器,它包含數(shù)組中每個(gè)索引的鍵俘陷。 返回的是下標(biāo)
- values() 方法返回一個(gè)新的 Array Iterator 對象张惹,該對象包含數(shù)組每個(gè)索引的值
for (let index of ['a', 'b'].keys()) {
console.log(index);
}
// 0
// 1
17.every() 方法測試數(shù)組的所有元素是否都通過了指定函數(shù)的測試。
function isBigEnough(element, index, array) {
return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true
18.some() 方法測試數(shù)組中的某些元素是否通過由提供的函數(shù)實(shí)現(xiàn)的測試岭洲。
console.log([1,2,3,4,5].some(isBigEnough),'----some'); //一個(gè)都沒有通過false
// passed is false
console.log([12, 54, 18, 1,2].some(isBigEnough),'--------some'); //只要有一個(gè)通過即為true
// passed is true
19.fill() 方法用一個(gè)固定值填充一個(gè)數(shù)組中從起始索引到終止索引內(nèi)的全部元素宛逗。
arr.fill(value,start盾剩,end)
let fillArr = [1, 2, 3, 4, 5];
console.log(fillArr.fill(3)) //[ 3, 3, 3, 3, 3 ]
console.log(fillArr.fill(2, 0, 2)) //[ 2, 2, 3, 3, 3 ]
console.log(fillArr.fill(5, 1)) // 2, 5, 5, 5, 5 ]
20.filter() 方法創(chuàng)建一個(gè)新數(shù)組, 其包含通過所提供函數(shù)實(shí)現(xiàn)的測試的所有元素雷激。
let filter = (value) => {
return value > 10
}
console.log([15, 13, 2, 16, 3].filter(filter)) // 15, 13, 16 ]
21.find() 方法返回?cái)?shù)組中滿足提供的測試函數(shù)的第一個(gè)元素的值。否則返回 undefined告私。
console.log([15, 13, 2, 16, 3].find(filter)) // 15 返回第一個(gè)滿足條件的值 否則undefined
22.findIndex()方法返回?cái)?shù)組中滿足提供的測試函數(shù)的第一個(gè)元素的索引屎暇。否則返回-1。
console.log([15, 13, 2, 16, 3].findIndex(filter)) // 0 返回第一個(gè)滿足條件的下表 否則-1
23.forEach() 方法對數(shù)組的每個(gè)元素執(zhí)行一次提供的函數(shù)驻粟。 //item是值,index下標(biāo),array是原數(shù)組
fillArr.forEach((item, index, array) => console.log(item))
24.includes() 方法用來判斷一個(gè)數(shù)組是否包含一個(gè)指定的值根悼,根據(jù)情況凶异,如果包含則返回
console.log(fillArr.includes(2)) //true 檢查數(shù)組中是否有該值有為true,否則false
console.log(fillArr.includes(4)) //false
25.indexOf()方法返回在數(shù)組中可以找到一個(gè)給定元素的第一個(gè)索引挤巡,如果不存在剩彬,則返回-1。
console.log(fillArr.indexOf(2)) //0
console.log(fillArr.indexOf(4)) //-1
26.join() 方法將一個(gè)數(shù)組(或一個(gè)類數(shù)組對象)的所有元素連接成一個(gè)字符串并返回這個(gè)字符串矿卑。
let joinArr = ['Wind', 'Rain', 'Fire'];
console.log(joinArr.join()); //Wind,Rain,Fire
27.lastIndexOf() 方法返回指定元素(也即有效的 JavaScript 值或變量)在數(shù)組中的最后一個(gè)的索引喉恋,如果不存在則返回 -1。從數(shù)組的后面向前查找母廷,從 fromIndex 處開始轻黑。
console.log(['a','b'].lastIndexOf('a')); //0 從后面往前面找
28.map() 方法創(chuàng)建一個(gè)新數(shù)組,其結(jié)果是該數(shù)組中的每個(gè)元素都調(diào)用一個(gè)提供的函數(shù)后返回的結(jié)果琴昆。
let numbers=[1,2,3,45,7,8,9];
let doubles=numbers.map(x=>x+1);
console.log(doubles,'------map') //[ 2, 3, 4, 46, 8, 9, 10 ] '------map'
29.reduce() 方法對累加器和數(shù)組中的每個(gè)元素(從左到右)應(yīng)用一個(gè)函數(shù)氓鄙,將其減少為單個(gè)值。
const reduceArr=[1,2,3,4,5,6];
const reduce=(accumulator,currentValue)=>{
console.log(accumulator,'-------accumulator'); //累加的值
console.log(currentValue,'-------currentValue'); //當(dāng)前元素
return accumulator+currentValue
};
console.log(reduceArr.reduce(reduce)) //21 從左往右
30.reduceRight() 方法接受一個(gè)函數(shù)作為累加器(accumulator)和數(shù)組的每個(gè)值(從右到左)將其減少為單個(gè)值业舍。
console.log(reduceArr.reduceRight(reduce)) //21 從右往左
31.reverse() 方法將數(shù)組中元素的位置顛倒抖拦。
console.log(reduceArr.reverse()) //[ 6, 5, 4, 3, 2, 1 ] 數(shù)組順序顛倒
32.sort() 數(shù)組的元素進(jìn)行排序,并返回?cái)?shù)組
let items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic' ,value :0},
{ name: 'Zeros', value: 37 }
];
items.sort((a,b)=>{
return a.value-b.value
})
console.log(items)
items.sort((a,b)=>{
var nameA = a.name.toUpperCase(); // ignore upper and lowercase
var nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// names must be equal
return 0;
// return nameA-nameB 轉(zhuǎn)成NAN
})
console.log(items)
33.toLocaleString()返回一個(gè)字符串表示數(shù)組中的元素勤讽。數(shù)組中的元素將使用各自的 toLocaleString 方法轉(zhuǎn)成字符串蟋座,
let str=[1,2,3,4,5];
console.log(str.toLocaleString()) //1,2,3,4,5