js数组常用方法-添加、删除、提取

最近有人说总是记不清数组的这四个(unshiftshiftpushpop)方法,哪个是添加?哪个是删除?其实可以先从操作的位置上来划分开,如果实在记不住可以按照下面的方式来记忆,其实这四个方法是特别常用的,如果记不住只能说写的代码、做项目太少了。

方法 说明
unshift 开头位置添加(s字母理解为start,也就是开始)
shift 开头位置删除(s字母理解为start,也就是开始)
push 末尾位置添加(p字母理解为屁股,也就是末尾)
pop 末尾位置删除(p字母理解为屁股,也就是末尾)
splice 在指定的位置添加、删除、替换
slice 提取元素片段

push

arr.push(element1, ..., elementN)
在数组的末尾添加一个或多个元素,并且返回数组的新长度

let array = ["赵", "钱", "孙"];
let len = array.push("李");
console.log(len); // > 4
console.log(array); // > ["赵", "钱", "孙", "李"]

array.push("周", "吴", "郑", "王");
console.log(array); // > ["赵", "钱", "孙", "李", "周", "吴", "郑", "王"]

unshift

arr.unshift(element1, ..., elementN)
在数组的开头添加一个或多个元素,并返回该数组的新长度

let array = ["赵", "钱", "孙"];
let len = array.unshift("张三", "李四");
console.log(len); // 5
console.log(array); // ["张三", "李四", "赵", "钱", "孙"]

pop

arr.pop()
从数组中删除最后一个元素,并返回该元素的值,数组为空时返回 undefined

let array = ["赵", "钱"];
let item = array.pop();
console.log(item); // 钱
console.log(array); // ["赵"]

array.pop();
console.log(array); // []

array.pop(); //undefined
console.log(array); // []

shift

arr.shift()
从数组中删除第一个元素,并返回该元素的值,数组为空时返回 undefined

let array = ["赵", "钱", "孙"];
let item = array.shift();
console.log(item); // 赵
console.log(array); // ["钱", "孙"]

splice

array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
从数组中指定位置删除、添加、替换元素,以数组的形式返回被删除的元素(如果没删除元素则返回空数组)

参数 说明
start 指定修改的开始位置
1.如果值大于数组本身长度,则从数组末尾添加
2.如果值是负数,则表示数组倒数第几位
3.如果负数的绝对值大于数组的长度,则表示开始位置为第0
deleteCount 整数,需要移除的元素个数
1.如果值大于 start 之后的元素的总数,则删除start位置和后面的所有元素
2.如果此参数不传,则删除start位置和后面的所有元素
3.如果此参数是0或者负数,则不移除元素
item1, item2, ... start位置开始要添加进数组的元素
//从第 1 位开始删除 1 个元素,插入"张三"和"李四"
let array = ["赵", "钱", "孙"];
let deleteItems = array.splice(1, 1, "张三", "李四");
console.log(deleteItems); // ["钱"]
console.log(array); // ["赵", "张三", "李四", "孙"]

slice

arr.slice([begin[, end]])
从当前的数组中返回选定元素的新数组对象(浅拷贝),原始数组不会被改变。

特别注意:提取的元素包含begin位置的值,但是不包含end位置的值

参数 说明
begin 提取元素的开始位置
1.如果值大于数组本身长度,则返回空数组
2.如果值是负数,则表示从数组倒数第几位提取
3.如果此参数不传,则默认从0的位置开始提取
end 提取元素的结束位置
1.如此参数为负数,则表示在原数组中的倒数第几个元素结束抽取
2.如果此参数不传,则表示一直提取到原数组末尾
3.如果此参数大于原数组的长度,则一直提取到原数组末尾。
// 提取从位置1到3的元素
let array = ["赵", { name: "钱" }, "孙", "李"];
let newItems = array.slice(1, 3);
console.log(newItems); // [{name: "钱"},"孙"]
console.log(array); // ["赵", { name: "钱" }, "孙", "李"]

// 浅拷贝:修改原数组中位置1的name值,新数组中的name值也发生变化
array[1].name = "钱钱";
console.log(newItems); // [{name: "钱钱"},"孙"]
console.log(array); // ["赵", { name: "钱钱" }, "孙", "李"]

你可能感兴趣的:(js数组常用方法-添加、删除、提取)