1. 程式人生 > 其它 >js移除陣列,刪除陣列

js移除陣列,刪除陣列

一、修改arr的length方法

根據修改後的length去除後面的元素。

let arr = [1,2,3,4,5,6,7,8,9];
arr.length = 3;
console.log('length',arr.length); // 3
console.log('arr',arr); // [1, 2, 3]

二、delete方法

修改arr的內容,但是length不變。

let arr = [1,2,3,4,5,6,7,8,9];
delete arr[2];
console.log('length',arr.length); // 9
console.log('arr',arr); // arr [1, 2, empty, 4, 5, 6, 7, 8, 9]

三、pop()方法

棧方法,刪除arr的最後一個元素。

let arr = [1,2,3,4,5,6,7,8,9];
arr.pop();
console.log('length',arr.length); // 8
console.log('arr',arr); // [1, 2, 3, 4, 5, 6, 7, 8]

四、shift()方法

刪除arr的第一個元素。

let arr = [1,2,3,4,5,6,7,8,9];
arr.shift();
console.log('length',arr.length); // 8
console.log('arr',arr); // [2, 3, 4, 5, 6, 7, 8, 9]

五、splice()方法

可以對arr進行增刪改操作。

刪除操作:

    第一位引數 0: 代表的是起始下標註。

    第二位引數 2: 代表的是刪除的位數。

let arr = [1,2,3,4,5,6,7,8,9];
arr.splice(0,2);
console.log('length',arr.length); // 7
console.log('arr',arr); // [3, 4, 5, 6, 7, 8, 9]

增加操作:

    第1位引數:2代表從何處新增資料,為必需引數。

    第2位引數:0代表要刪除的個數,可選。

    第3...位引數:可選,要新增的元素。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,0,"Lemon","Kiwi"); // Banana,Orange,Lemon,Kiwi,Apple,Mango

// 移除陣列的第三個元素,並在陣列第三個位置新增新元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,1,"Lemon","Kiwi"); // Banana,Orange,Lemon,Kiwi,Mango

六、slice()方法

slice() 方法返回一個新的陣列物件,這一物件是一個由 begin 和 end 決定的原陣列的淺拷貝(包括 begin,不包括end)。

原始陣列不會被改變。

const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];

// 第一個引數:可選,begin從該索引處開始提取元素;如果該引數為負數,則表示從原陣列中的倒數第幾個元素開始提取,slice(-2) 表示提取原陣列中的倒數第二個元素到最後一個元素(包含最後一個元素)。
// 如果省略 begin,則 slice 從索引 0 開始。
// 如果 begin 超出原陣列的索引範圍,則會返回空陣列。
// 第二個引數:可選,end從該索引處結束提取元素;如果該引數為負數, 則它表示在原陣列中的倒數第幾個元素結束抽取。 slice(-2,-1) 表示抽取了原陣列中的倒數第二個元素到最後一個元素(不包含最後一個元素,也就是隻有倒數第二個元素)。
// 如果 end 被省略,則 slice 會一直提取到原陣列末尾。
// 如果 end 大於陣列的長度,slice 也會一直提取到原陣列末尾。
console.log(animals.slice(2)); // ["camel", "duck", "elephant"]
console.log(animals.slice(2, 4)); // ["camel", "duck"]
console.log(animals.slice(1, 5)); // ["bison", "camel", "duck", "elephant"]
console.log(animals.slice(-2)); // ["duck", "elephant"]
console.log(animals.slice(2, -1)); // ["camel", "duck"]

七、forEach() || filter()方法

通過迭代迴圈,刪除元素。

// forEach()
let arr = [1,2,3,4,5,6,7,8,9];
arr.forEach((item,index,arr) => {
	if(item === 3){
   		arr.splice(index,1);
	}
});
console.log('length',arr.length); // 8
console.log('arr',arr); // [1, 2, 4, 5, 6, 7, 8, 9]

// filter()
let arr1 = [1,2,3,4,5,6,7,8,9];
arr1 = arr1.filter((item)=>{
    return item !== 3;
});
console.log('length',arr1.length); // 8
console.log('arr',arr1); // [1, 2, 4, 5, 6, 7, 8, 9]

八、操作原型

通過在Array原型上新增方法來完成刪除。

let arr = [1,2,3,4,5,6,7,8,9];
Array.prototype.remove = function(v) {
	for(let i = 0, j = 0; i < this.length; i++) {
		if(this[i] != v) {
			this[j++] = this[i];
		}
	}
	this.length -= 1;
}
arr.remove(2); //引數為要移除的元素
console.log('length',arr.length); // 8
console.log('arr',arr); // [1, 3, 4, 5, 6, 7, 8, 9]