push
- 语法:数组名.push(数据)
- 作用:向数组末尾 新增一条数据
- 返回值:新增数据后最新的数组长度
var arr =[1,2,3]
//数组名.push(数据)
//var len =arr.push(100)
//console.log(arr)
//console,log('返回值:',len)
手动模拟 push
- 作用:向数组末尾 新增一条数据
function push(push_arr,data){
push_arr(push_arr.length)=data
return push_arr.length
}
push(arr,100)
push(arr,'哈哈哈哈')
push(arr,true)
console.log(arr)
pop
- 语法:数组名.pop()
- 作用:删除数组末尾最后一个数字
- 返回值:被删除的数据
// 自己封装一个 pop 函数
//作用: 删除数组末尾最后一个数据
// 返回值: 被删除的数
var arr=[1,2,3]
function pop(pop_arr){
// 0. 先将数组末尾的数据保存, 用于删除后返回出去
var len =pop_arr[pop_arr.length-1]
// 1. 删除 数组末尾最后一个数据
// 删除后 位置还在, 也就是说, 数组最后一位的值没有了, 但是 length 不变 (人出去了, 桌子还在)
// delete pop_arr[pop_arr.length - 1]
// 删除后 位置也没了, 也就是说, 数组最后一位的值和位置都被删除了, (人和桌子都没了)
pop_arr.length-=1
// 2. 返回被删除的数据
// console.log('函数内: ', len)
return len
}
var res =pop(arr)
console.log('函数执行完毕后的数组:',arr)
console.log('函数执行完毕后的返回值:',res)
unshift
- 语法:数组.unshift(数据)
- 作用:向数组开头,添加一个数据
- 返回值:新增完数据后的一个数组长度
var arr =[1,2,3]
console.log(arr)
function unshift(unshift_arr,data){
//逻辑
//1. 创建一个新的数组, 然后将这个数组开头放上我们执行要添加的数据
//2. 2. 在将原本数组后续的内容, 放在新数组的后边
//1.创建一个新的数组, 然后将这个数组开头放上我们执行要添加的数据
var newArr = [data]
//2. 在将原本数组后续的内容, 放在新数组的后边
for(var i=0;i<unshift_arr.length;i++){
newArr[i+1]=unshift-arr[i]
}
return{
arr:newArr,
len:newArr.length
}
}
var res = unshift(arr,'newData')
var arr1=[1,2,3]
console.log(arr1)
var len=arr1.unshift(100)
console.log(arr1)
shift
- 语法:arr.shift()
- 作用:删除首位元素的值
- 返回值:返回删除的元素
var arr =[1,2,3,4,5,6]
console.log(arr.shift())
//函数
function shift(a){
// 1. 暂存数组首位的内容, 将来要返回出去
var temp=a[0]
// 2. 遍历数组找到数组所有的内容, 删除首位的内容
for(var i=0;i<shift_arr.length;i++){
a[i]=a[i+1]
}
a.length-=1
return temp
}
var res =shift(arr)
console.log(arr)
reverse()
- 语法:arr.reverse()
- 作用:反转数组
- 返回值:反转后的数组
- 注意:该方法能够改变原数组
var arr = [1, 2, 3, 4, 5, 6]
// console.log('原数组: ', arr)
// console.log('调用方法后的返回值: ', arr.reverse())
// console.log('调用方法后数组: ', arr)
// 自定义函数
function reverse(a) {
/**
* 1. 交换数组内部元素的位置, 第一个和最后一个交换, 第二个和倒数第二个交换
*
* 第 1 轮循环 i === 0
* var temp = a[i] var temp = a[0] temp === 1
* a[i] = a[a.length - 1 - i] a[0] = a[a.length - 1 - 0] a[0] = 6
* a[a.length - 1 - i] = temp a[a.length - 1 - i] = 0 a[5] = 0
*
* 所以第一轮循环 是将 第一个位置的值 和 数组最后一个位置的值 位置上进行了一个交换
*
* 第 2 轮循环 i === 1
* ......
*
* 第 3 轮循环 i === 2
* ......
*
* 第 4 轮循环 i === 3
* ......
*/
for (var i = 0; i < a.length / 2; i++) {
var temp = a[i];
a[i] = a[a.length - 1 - i]
a[a.length - 1 - i] = temp
}
// 2. 将反转完毕的数组, 返回出去
return a
}
var res = reverse(arr)
console.log(res);
sort
语法1: 数组名.sort()
* 作用: 将数组内的数据, 转换为 字符串, 然后一位一位的对比
*
* 语法2: 数组名.sort(function (a, b) { return a - b })
* 作用: 会按照数字的 从小到大
*
* 语法3: 数组名.sort(function (a, b) { return b - a })
* 作用: 和 语法2相反, 从大到小
*
* 返回值: 返回一个排序好的数组
*
* 注意: sort 使用后能够修改原数组
*/
// 语法1
var arr = [1, 2, 3, 4, 5, 100, 300, 401, 404, 500, 1001, 2023]
console.log('原数组: ', arr)
console.log('sort 的返回值: ', arr.sort())
console.log('调用方法后的数组: ', arr)
arr.sort()
console.log(arr)
//语法2
var arr = [100, 30, 54, 67, 21, 6]
aarr.sort(function(a,b){returna-b})
console.log(arr)
//语法3
var arr = [100, 30, 54, 67, 21, 6]
arr.sort(function (a, b) { return b - a })
console.log(arr)
indexof
- 语法1: 数组.indexof(数据)
- 语法2: 数组.indexof(数据,从那个下标开始(第二个参数不传,默认为0)
- 作用:从左到右的顺序,查找数组中是否包含这个数据
- 返回值:
-
找到:返回从左到右第一次出现的下标 -
否则返回-1
var arr = [1, 2, 3, 4, 1, 2, 3]
// 0 1 2 3 4 5 6
console.log(arr.indexOf(1)) // 0
console.log(arr.indexOf(100)) // -1
console.log(arr.indexOf(1, 3)) // 4
console.log(arr.indexOf(1, 5)) // -1
console.log('arr: ', arr)
/**
* 封装一个函数, 名为 indexOf
*
* 功能: 从左到右的顺序, 查找数组中是否包含这个数据, 同时可以指定从哪个位置开始查询
*
* 返回值:
* 找到: 返回从左到右第一次出现的下标
* 否则返回 -1
*/
var arr=[1,2,3,4,1,2,3]
// 0 1 2 3 4 5 6
function indexof(arr,data,index = 0){
for(var i =index;i<arr.length;i++){
if(arr[i]===data) return i
}
return -1
}
console.log(indexOf(arr, 5, 3)) // -1
console.log(indexOf(arr, 1, 3)) // 4
/** * splice (作用类似于 剪切) * * 语法1: 数组.splice(开始索引, 剪切多少个) * 功能: 剪切 * * 语法2: 数组.splice(开始索引, 剪切多少个, 数据1, 数据2, 数据3.....) * 功能: 将 第三个参数开始到结束的所有内容, 替换你指定的区域内容 * * 返回值: 剪切到的内容 */
var arr = [1, 2, 3, 4, 5]
// 0 1 2 3 4
// 语法1
// arr.splice(0, 3) // 从 [0] 开始, 剪切 3 个
// console.log(arr)
// var res = arr.splice(0, 3)
// console.log('剪切到的内容: ', res)
// console.log('剪切后的数组: ', arr)
// 语法2
arr.splice(0, 3, '新加入的数据1', true, undefined, { name: '张三' }, [1, 2, 3])
console.log('剪切后的数组: ', arr)