作业讲解1
let arr=[11,22,33,44,55]
function push(val) {
arr[arr.length]=val
}
push(10)
push(20)
console.log(arr)
console.log(arr.length)
作业讲解2
let arr=[11,22,33,44,55]
function push(val) {
arr[arr.length]=val
}
push(10)
push(20)
function pop() {
//先将最后一个元素获取并备份
let res=arr[arr.length-1]
//数组的长度-1,会自动删除最后一个元素
arr.length-=1
//返回备份
return res
}
let last =pop()
console.log(last)
console.log(arr)
console.log(arr.length)
作业讲解3
function unshift(val) {
//因为数组长度会扩容,所以先记录长度
//放for里会不停增长,放外面就只走一次,不会重新赋值
let len = arr.length
for (let i = len - 1; i >= 0; i--) {
//i--从后往前走;len-1长度减1,
arr[i + 1] = arr[i]
//往后移以为,把值给后一个
}
arr[0] = val
//将第一个元素改成参数值,覆盖第一个元素
}
unshift(111)
console.log('-'.repeat(30));
console.log(arr);
console.log(arr.length);
作业讲解4
let arr = [11, 22, 33, 44, 55]
function shift(val) {
let res=arr[0]//备份第一个
for (let i = 0; i <arr.length; i++) {
arr[i] = arr[i + 1]
}
arr.length--
return res
}
let first=shift()
console.log(first)//将第一个单独打印
console.log('-'.repeat(30));
console.log(arr);
console.log(arr.length);
作业讲解5
let arr = [11, 22, 33, 44, 55]
function reverse() {
let len=arr.length//放里面拿到的是最新的值
//循环数组到一半,将前面每一个元素跟后面对应的元素比较,如果值不相等,则交换
for (let i = 0; i < len/2; i++) {
//操作越少越快
if (arr[i]!==arr[len-1-i]) {
//如果相等则不必替换,节约内存开销
let temp=arr[i]
//定义第三个变量来完成变量值交换
arr[i]=arr[len-1-i]
arr[len-1-i]=temp
}
}
}
reverse()
console.log('-'.repeat(30));
console.log(arr);
console.log(arr.length);
作业讲解6
先想好最大长度
let arr = [11, 22, 33, 44, 55]
function splice(index,len) {
if (len<0) throw '请输入合法参数'
let maxLen=arr.length-index //算出最大值,防止溢出
if(!len||len>maxLen)len=maxLen
//如果len没传出或者超过最大值,则限制为最大值
let res=[]
for (let i = index; i < arr.length; i++) {
//在删除范围内的元素,返回出去
if (i<index+len) {
res.push(arr[i]) }
arr[i]=arr[i+len] }
arr.length-=len //删除对应长度,完成删除
return res
}
splice(1,3)
console.log('-'.repeat(30));
console.log(arr);
console.log(arr.length);
新知识:
//方法1:function a(){}
//方法2:let a=function(){}
//函数的写法二:let a = () => {}箭头函数了解
//特性:如果只有一个参数大括号可以省略
如果只有一个值小括号可以省略
let a = () => {
return 1
}
let b=a()//调用时才是1
console.log(b)
---------------------------------
let a = (aa, bb) => {return aa + bb}
//如果只有一个参数大括号可以省略
let a = (aa, bb) => aa + bb
console.log(a(10, 20))
---------------------------------
let b = num => num * 20 //如果只有一个值小括号可以省略
console.log(b(20))
函数的传递功能
//callback 回调函数
//将一个函数作为函数传入到另一个函数执行
//高阶函数:参数为函数或者返回值为函数的函数称为高阶函数
结果10
----------------------------
let a=function(num){
console.log(num)
}
//callback 回调函数
//将一个函数作为函数传入到另一个函数执行
//高阶函数:参数为函数或者返回值为函数的函数称为高阶函数
function test(b){
b(30)
}
test(a)
自执行函数:函数只能被调用一次( function () {} )
应用:
forEach 对函数的封装,方便循环时使用
forEach(function () {})
arr.filter//筛选、过滤的意思
arr.some//判断是否存在符合条件的元素
(是否包含需全部匹配)
arr.every//判断数组是否全部符合条件
(判断是否都姓王)
arr.find//返回数组中第一个满足条件的元素