1. 程式人生 > >js基礎之陣列例項方法

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']