arr.join(‘-’) //返回 “1-2-3-4”
sort()
方法是将数组中的每个元素按一定条件排序后并返回排序后的新数组(会改变原数组)
参数(共1个):
- 第一个参数: 可选参数,该参数为回调函数,该回调函数需传入两个参数
a
和b
。当回调函数返回一个小于0的数时,参数a
将排在前面;当返回一个大于0的数时,参数b
将排在前面;当返回0时,则这两个值不进行比较排序。若省略该参数,则将每个元素按照字母表的顺序排列。
sort()
方法使用实例
var arr = [‘cherry’, ‘apple’, ‘banana’]
arr.sort() //未传入回调函数作为参数
console.log(arr) //返回 [‘apple’, ‘banana’, ‘cherry’]
该例子中,省略了第一个参数,所以在排序时默认按照字母表顺序进行排列,若首字母相同,则按第二个字母的先后顺序排列。
接下来看一下第一个参数的详细使用
var arr = [54, 78, 12, 64]
arr.sort(function (a, b) {
return a - b
})
console.log(arr) //返回 [12, 54, 64, 78] 升序排列
调用sort()
方法,会每次从数组中取出两个数,分别作为参数a
和参数b
,若回调函数return
一个负数,则参数a
排在前面;若return
一个正数,则参数b
排在前面;若return 0
,则两个数不进行排序。
该例子就实现了升序排列
那么如果把a - b
改成b - a
,就能实现降序排列了
var arr = [54, 78, 12, 64]
arr.sort(function (a, b) {
return b - a
})
console.log(arr) //返回 [78, 64, 54, 12] 降序排列
reverse()
方法是将数组中的元素颠倒,并返回颠倒后的数组(会改变原数组)
这个方法很简单,直接来看例子
var arr = [54, 78, 12, 64]
arr.reverse()
console.log(arr) //返回 [64, 12, 78, 54]
该方法无非就是将数组转成了逆序数组
concat()
方法将调用每一个参数创建并返回一个数组(不会改变原数组)
该方法可以省略参数或者传入多个参数。
当省略参数时,则表示创建一个新的空数组,将原始数组的数据传入这个空数组中,有点类似copy
的感觉 ; 当传入1个或多个参数时,则表示创建一个新的空数组,将原始数组的数据和每个参数都添加到这个空数组中。
接下来我们来看看具体的例子,首先是不传入任何参数
var arr = [1,2,3,4]
var new_arr = arr.concat()
console.log(new_arr) //返回 [1,2,3,4]
再来看传入参数的例子
var arr = [1,2,3,4]
var new_arr = arr.concat(5,6,7,8)
console.log(new_arr) //返回 [1,2,3,4,5,6,7,8]
跟定义说的一样,传入的参数也被当成新创建的数组中的成员添加了进去
其实我们还可以传入数组作为该方法的参数,最后会将数组中每一个元素添加到新的数组中去
var arr = [1,2,3,4]
var new_arr = arr.concat([5,6,7,8])
console.log(new_arr) //返回 [1,2,3,4,5,6,7,8]
但是,如果数组中还嵌套了数组,那么嵌套的那个数组会被当成一个整体添加到新的数组中去。简而言之,也就是说该方法只能拆分一层的数组参数
var arr = [1,2,3,4]
var new_arr = arr.concat([5,6,7,8,[9,10]])
console.log(new_arr) //返回 [1,2,3,4,5,6,7,8,[9,10]]
可以很清楚地看到,嵌套的数组[9,10]
并没有被拆开添加到新数组中,而是作为整体添加到了新数组中
slice()
方法是返回指定的一个数组片段
该方法有两个参数,分别代表了数组片段的起始位置和结束位置,第一个参数不能省略,第二个参数可以省略
接下来看该方法的使用例子
var arr = [1,2,3,4,5,6,7]
arr.slice(1,3) //返回 [2,3]
arr.slice(3) //返回 [4,5,6,7]
arr.slice(4,-1) //返回 [5,6]
arr.slice(-3) //返回 [5,6,7]
arr.slice(-3,-2) //返回 [5]
第二个参数表示的是数组片段的结束位置,所以取到的片段是从第一个参数表示的位置取到第二个参数表示的位置的前一个元素。
若省略第二个参数,则表示从第一个参数表示的位置一直取到最后一个元素
用负数表示元素位置时,是从末尾往前数,分别为-1 、-2 、-3……
splice()
方法在数组指定位置插入或删除元素,并返回删除元素组成的数组(会改变原数组)
参数(共3个):
-
第一个参数:删除或插入元素的起始位置
-
第二个参数:从起始位置开始往后需要删除的元素个数。若该元素省略,则表示从起始位置开始到最后的所有元素都删除
-
第三个参数及之后的所有参数:将该值作为数组的元素依次插入到第一个参数表示的位置上
我们直接来看几个简单的例子
var arr = [1,2,3,4,5,6,7]
arr.splice(4) //返回 [5,6,7],此时arr为[1,2,3,4]
arr.splice(1, 2) //返回 [2,3],此时arr为[1,4]
arr.splice(1, 0, ‘new1’, ‘new2’) //返回[],此时arr为[1,‘new1’,‘new2’,4]
所以这是一个很方便并且功能很全的数组操作函数,它既可以删除元素,又可以插入元素
push()
方法是在数组的尾部添加一个或多个元素,并返回数组的长度(会改变原数组)
该函数的有1个或多个参数,函数依次获取每个参数将其插入到数组的末尾
直接来看例子
var arr = []
arr.push(1) //返回 1, 此时arr为 [1]
arr.push(5) //返回 2, 此时arr为 [1,5]
arr.push(3,2) //返回 4, 此时arr为 [1,5,3,2]
pop()
方法是删除数组的最后一个元素,并返回该元素(会改变原数组)
该函数不需要传入任何参数
来简单看下例子
var arr = [6,8,7]
arr.pop() //返回 7, 此时arr为 [6,8]
arr.pop() //返回 8, 此时arr为 [6]
unshift()
方法是在数组的头部添加一个或多个元素,并返回数组的长度(会改变原数组)
该函数的有1个或多个参数,函数依次获取每个参数将其插入到数组的最前面
来看几个例子
var arr = []
arr.unshift(1) //返回 1, 此时arr为 [1]
arr.unshift(5) //返回 2, 此时arr为 [5,1]
arr.unshift(3,2) //返回 4, 此时arr为 [2,3,5,1]
shift()
方法是删除数组第一个元素,并返回该元素(会改变原数组)
该函数不需要传入任何参数
来简单看下例子
var arr = [6,8,7]
arr.shift() //返回 6, 此时arr为 [8,7]
arr.shift() //返回 8, 此时arr为 [7]
arr.shift() //返回 7, 此时arr为 []
toString()
方法是返回将数组每个元素转化为字符串并用逗号分隔连接起来的字符串(不会改变原数组)
若遇到数组里嵌套数组的话,同样也会将该嵌套数组里的每个元素转化为字符串并连接起来
来看几个例子
[1,2,3].toString() //返回 ‘1,2,3’
[‘cherry’,‘apple’,‘bannana’].toString() //返回 ‘cherry,apple,banana’
[1,2,[6,7]].toString() //返回 ‘1,2,6,7’
[1,[3,6,[8,9]]].toString() //返回 ‘1,3,6,8,9’
forEach()
方法是ES5新增的,它是用来为每个元素调用指定的函数(可以修改原数组)
该方法只有一个参数,该参数为回调函数,该回调函数有三个参数,这三个参数的含义分别为数组元素 、元素的索引 、数组本身
来看一个例子,现在要求将某一数组内的每个元素都+2
var a = [1,2,3,4,5]
a.forEach(function (value, index, arr) {
arr[index] = value + 2
})
console.log(a) // [3,4,5,6,7]
再来看一个例子,计算数组内各元素之和
var a = [1,2,3,4,5]
var sum = 0
a.forEach(function(value) {
sum += value
})
console.log(sum) // 15
map()
方法是是ES5新增的,它是将调用的数组的每个元素传递给指定的函数,把每次调用回调函数的返回值存入到一个新的数组中,最后返回这个新的数组(不会改变原数组)
该方法只有一个参数,该参数为回调函数,该回调函数只有一个参数,该参数的含义是数组的每个元素
来看一个例子,返回一个新的数组,该数组内的每个元素为原数组每个元素的平方
var arr = [1,2,3,4,5]
var new_arr = arr.map(function (value) {
return value * value
})
console.log(new_arr) // [1, 4, 9, 16, 25]
filter()
方法是ES5新增的,相当于一个过滤器,它是通过回调函数里的逻辑判断来过滤掉不需要的元素,再将剩下的元素都放到一个新的数组中并返回(不会改变原数组)
该方法只有一个参数,该参数为回调函数,该回调函数有两个参数,他们的含义分别为数组中的元素 、 元素的索引
当回调函数的返回值为true
时,即return true
时,该元素将被加入到新的数组中;反之,该元素将被不被加入到新的数组中
接下来我们来看一个例子。需求是:挑选出数组中小于6的所有元素,并保存在数组中返回
var arr = [6, 12, 7, 1, 9, 3, 0, 19]
var new_arr = arr.filter(function (value) {
return value < 6
})
console.log(new_arr) // [1, 3, 0]
再来看一个例子。需求是:将一个数组中偶数位置的元素取出来保存在一个新数组中并返回
var arr = [6,12,7,1,9,3,0,19]
var new_arr = arr.filter(function (value, index) {
return index % 2 === 0
})
console.log(new_arr) // [6, 7, 9, 0]
every()
方法是针对一个数组的逻辑判定(不会改变原数组)
该方法有一个参数,该参数为回调函数,该回调函数有一个参数,该参数含义是数组中的每个元素
当每个元素调用回调函数的返回值全部都为true
时,最后返回true
;相反,只要有一个元素调用回调函数,返回的值不为true
,最后都会返回false
我们来看一个例子。需求:判断该数组中每个元素是否都小于10
var arr = [1,2,3,4,5,6,7,8]
var result = arr.every(function (value) {
return value < 10
})
console.log(result) // true, 表示该数组所有元素都小于10
我们把arr
中的元素改变几个,再来看看代码运行结果
var arr = [1, 2, 3, 4, 5, 6, 12, 8]
var result = arr.every(function (value) {
return value < 10
})
console.log(result) // false, 表示该数组中有某个元素不小于10
some()
方法跟every()
方法类似,只是逻辑判断略有不同,前者是当每个元素调用回调函数后的返回值中,只要有一个为true
,则最终返回true
;反之,只有当每个元素调用回调函数后的返回值全部都为false
时,最后才返回false
我们直接来看例子。需求是:判断该数组中是否有元素12
var arr = [3, 8, 9, 45, 12]
var result = arr.some(function (value) {
return value === 12
})
console.log(result) // true, 表示该数组中有元素12
那当把arr
数组中的元素12
删除以后,我们再来看看返回结果
var arr = [3, 8, 9, 45]
var result = arr.some(function (value) {
return value === 12
})
console.log(result) // false, 表示该数组中并没有元素12
reduce()
方法是通过调用指定的回调函数将数组元素进行组合,并返回组合后的值(不会改变原数组)
参数(共2个):
-
第一个参数:为回调函数,用于处理数组元素。该回调函数有两个参数
x
、y
,这两个参数都为调用数组的元素成员 -
第二个参数:为可选参数,作为传递给回调函数的初始值。若省略该参数,则将数组的第一个数作为初初始值
当省略了第二个参数时,该方法第一次调用回调函数时,将数组的第一个元素作为回调函数的第一个参数x
的值,将数组的第二个元素作为回调函数的第二个参数y
的值。然后运行回调函数里的代码,将return
后的值作为下一次调用回调函数的第一个参数x
的值,然后将数组的第三个元素作为参数y
的值……以此类推,直到数组内所有元素都被调用以后,将最后一次调用回调函数的return
值作为最终的返回值。
如果给第二个参数赋值了的话,则在第一次调用回调函数时,是将第二个参数的值作为该回调函数的第一个参数x
的值,将数组的第一个参数作为该回调函数的第二个参数y
的值……接下来的操作都跟上述一样,这里不再重述
我们来看一个例子。需求是:将数组中的每一个元素相乘并返回最终的值
var arr = [1,2,3,4,5,6]
var result = arr.reduce(function (x, y) {
return x * y
})
console.log(result) // 720
再来看一个例子。需求是:某数组中存储着一个班级里5个学生的年龄,现在要计算这5个学生的年龄和,并加上老师的年龄,老师的年龄为29
var arr = [10, 11, 13, 14, 12]
var result = arr.reduce(function (x, y) {
return x + y
}, 29) //这里将老师的年龄29作为reduce()方法的第二个参数
console.log(result) // 89
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
javascript是前端必要掌握的真正算得上是编程语言的语言,学会灵活运用javascript,将对以后学习工作有非常大的帮助。掌握它最重要的首先是学习好基础知识,而后通过不断的实战来提升我们的编程技巧和逻辑思维。这一块学习是持续的,直到我们真正掌握它并且能够灵活运用它。如果最开始学习一两遍之后,发现暂时没有提升的空间,我们可以暂时放一放。继续下面的学习,javascript贯穿我们前端工作中,在之后的学习实现里也会遇到和锻炼到。真正学习起来并不难理解,关键是灵活运用。
到现在。**
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-5kQb7vzE-1712370457626)]
[外链图片转存中…(img-34QyBfHq-1712370457626)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
[外链图片转存中…(img-ndixdZLf-1712370457627)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
javascript是前端必要掌握的真正算得上是编程语言的语言,学会灵活运用javascript,将对以后学习工作有非常大的帮助。掌握它最重要的首先是学习好基础知识,而后通过不断的实战来提升我们的编程技巧和逻辑思维。这一块学习是持续的,直到我们真正掌握它并且能够灵活运用它。如果最开始学习一两遍之后,发现暂时没有提升的空间,我们可以暂时放一放。继续下面的学习,javascript贯穿我们前端工作中,在之后的学习实现里也会遇到和锻炼到。真正学习起来并不难理解,关键是灵活运用。
[外链图片转存中…(img-fIxv1OtC-1712370457627)]
[外链图片转存中…(img-blE74H3T-1712370457627)]