js基礎之陣列例項方法
toString() 方法
陣列的toString方法返回陣列的字串形式
let arr = ['it', 'he', 'she'];
arr.toString(); // "it,he,she"
let arr = ['it', 'he', 'she', ['1', '2', '3']];
arr.toString(); // "it,he,she,1,2,3"
push(), pop()方法會改變原陣列
push 方法在陣列的末尾新增一個或多個元素,並且返回新增後的陣列長度
let arr = []; arr.push(1); // 1 arr.push(true, {}); // 3 arr // [1, 'a', true, {}]
pop方法用於刪除陣列的最後一個元素,並返回該元素。如果對空陣列進行pop操作返回undefined
let arr = [1, 2, 3];
arr.pop(); // 'c'
arr // ['a', 'b']
[].pop(); // undefined
shift(), unshift() 方法會改變原陣列
shift方法用於刪除陣列的第一個元素,並返回該元素。 使用shift可以清空函式
let a = ['a', 'b', 'c']; a.shift(); // 'a' a // ['b', 'c'] while(item = list.shift()) { console.log(item); }
unshift方法用於在陣列的第一個位置新增元素,可以傳入多個引數,並返回新增新元素後的陣列長度。
let arr = [ 'c', 'd' ];
arr.unshift('a', 'b') // 4
arr // [ 'a', 'b', 'c', 'd' ]
join() 方法以指定引數作為分隔符,將所有陣列成員連線為一個字串返回。如果不提供引數,預設用逗號分隔。
let a = [1, 2, 3, 4]; a.join(' ') // '1 2 3 4' a.join(' | ') // "1 | 2 | 3 | 4" a.join() // "1,2,3,4" //如果陣列中有undefined、null或者空位,會被轉換成空字串。 let arr = ['b', undefined, null, , 'a']; arr.join('-'); // 'b----a'
concat() 合併陣列
concat該方法可以將其他陣列、變數或者其他物件合併到此陣列中,然後返回一個新陣列。
let a = ['hello'];
let b = ['world'];
let c = 100;
let d = {n: "name"};
a.concat(b); // ["hello", "world"];
a.concat(b, c); // ["hello", "world", 100];
a.concat(d); // ["hello", {n: name}]
注意:如果陣列成員包括物件concat方法返回陣列的一個淺拷貝(新陣列所拷貝的是物件的引用)
let obj = {a: 1};
let oldArr = [obj];
let newArr = oldArr.concat();
obj.a = 10;
newArr[0].a // 2
reverse() 翻轉陣列
reverse方法用於將陣列前後對調,此方法會改變原陣列
let a = ['a', 'b', 'c'];
a.reverse();
a // ['c', 'b', 'a']
slice() 原陣列不變
slice方法用於提取目標陣列的一部分,返回一個新陣列。
arr.slice(start, end);
start起始下標,預設從0開始 end結束下標,預設到最後元素
let a = ['a', 'b', 'c'];
a.slice(1) // ["b", "c"]
a.slice(2, 6) // ["c"]
a.slice() // ["a", "b", "c"]
// 引數可以是負數,表示倒數計算的位置
let a = ['a', 'b', 'c'];
a.slice(-2) // ["b", "c"] 倒數第二個開始
splice() 該方法會改變原陣列
splice方法用於刪除原陣列的一部分成員,並可以在刪除的位置新增新的陣列成員,返回值是被刪除的元素。
arr.splice(start, count, addElement1, addElement2, …);
start 起始位置 count 刪除個數 add… 新新增引數
let a = ['a', 'b', 'c', 'd', 'e', 'f'];
a.splice(4, 2) // ["e", "f"]
a // ["a", "b", "c", "d"]
let a = ['a', 'b', 'c', 'd', 'e', 'f'];
a.splice(2);
a // ['a', 'b']
新增
let a = [1, 1, 1];
a.splice(1, 0, 2) // []
a // [1, 2, 1, 1]
sort() 改變原陣列
方法對陣列成員進行排序,預設是按照字典順序排序。
let a = ['d', 'c', 'b', 'a'];
a.sort()
a // ['a', 'b', 'c', 'd']
因為排序按照字典順序,所以當對數字元素排序時
let a = [10111, 1101, 111];
a.sort((a, b) => {
return a - b;
});
a // [111, 1101, 10111]
forEach()
對陣列的所有成員依次執行引數函式,forEach方法不返回值,只用來操作資料,如果遇到陣列空位,會直接跳過
[1, 2].forEach((element, index, array) => {
console.log('[' + index + '] = ' + element);
});
// [0] = 1
// [1] = 2
[1, , 2].forEach((element, index, array) {
console.log('[' + index + '] = ' + element);
});
// [0] = 1
// [1] = 2
// forEach方法也可以接受第二個引數,繫結引數函式的this變數。
let out = [];
[1, 2, 3].forEach(function(elem) {
this.push(elem * elem);
}, out);
out // [1, 4, 9]
indexOf(),lastIndexOf()
indexOf方法返回給定元素在陣列中第一次出現的位置,如果沒有出現則返回-1。
let a = ['a', 'b', 'c'];
a.indexOf('b') // 1
a.indexOf('y') // -1
indexOf方法還可以接受第二個引數,表示搜尋的開始位置。
['a', 'b', 'c'].indexOf('a', 1) // -1 從第二個開始 所以沒有搜尋到
lastIndexOf方法返回給定元素在陣列中最後一次出現的位置,如果沒有出現則返回-1。
let a = [2, 5, 9, 2];
a.lastIndexOf(2) // 3
a.lastIndexOf(7) // -1
map()函式 遍歷每一個成員,執行結果返回一個新陣列,原陣列不變
let numbers =[1, 2, 3, 4];
numbers.map((elem, index, arr)=> {
return elem * elem;
});
// [1, 4, 9, 16]
// map方法可以接受第二個引數,用來繫結回撥函式內部的this變數
let arr = ['a', 'b', 'c'];
[1, 2].map(function (e) {
return this[e];
}, arr)
// ['b', 'c']