function test(){
let arr=['A','B','C']
console.log(arr.join())
console.log(arr.join('-'))
}
2、push()和pop()方法
push()方法从数组末尾向数组添加元素,可以添加一个或多个元素,并返回新的长度,pop()方法用于删除数组的最后一个元素并返回删除的元素
function test2(){
let arr=['A','B','C']
let a = arr.push('D','E','F','G');
console.log(a)
console.log(arr.join())
var b = arr.pop()
console.log(b)
console.log(arr.join())
}
注意:push返回的是添加元素后数组的长度,原数组的值也被改变,pop返回的是数组的最后一个值,同时原数组最后一个值被删除
3、unshift()和shift()方法
unshift()方法可向数组的开头添加一个或更多元素,并返回新的长度,shift()方法用于把数组的第一个元素从其中删除,并返回第一个元素的值
function test3(){
let arr=['A','B','C']
let a = arr.unshift('D','E','F','G');
console.log(a)
console.log(arr.join())
var b = arr.shift()
console.log(b)
console.log(arr.join())
}
注意:unshift返回的是添加元素后数组的长度,原数组的值也被改变,pop返回的是数组的第一个值,同时原数组第一个值被删除
4、sort()方法
用于对数组的元素进行排序。默认情况下是将数组元素转换成字符串,然后按照ASC码进行排序,所以,如果是按默认情况,我们的Sort()方法并不能排序数字,因为他会转换为字符的形式进行比较,排序顺序可以是字母或数字,并按升序或降序,默认排序顺序为按字母升序
arrayObject.sort(sortby);
参数sortby可选。规定排序顺序,必须是函数。
function test4(){
var arr= ['a','d','c','b','c'];
console.log(arr.sort().join());
let arr1 = [116,22,13,1,2,34,222,16,88,18,37,56,50]
console.log(arr1.sort().join())
}
如上代码所示:我们的字母被正确排序,数字却会按照第一位数字,第二位数字,第三位数字,一位一位的比较,所以,数字并没有被正确排序,那么我们想要让字母正确排序怎么办呢?请看如下代码:
function test5(){
function compare(val1,val2){
if(val1 < val2){
return -1
}else if(val1 > val2){
return 1
}else{
return 0
}
}
let arr2 = [13,24,51,3,234,123,23,45,67,8]
console.log(arr2.sort(compare).join())
let arr3 = [13,24,51,3,234,123,23,45,67,8]
console.log(arr3.sort((a, b) => (a - b)).join())
}
如上代码所示:我们通过写一个比较两个值的自定义函数,作为Sort的调用参数进行排序,使用了两种方式创建自定义函数,在function内部写function,以及使用=>创建函数,两种方式都能实现数字排序,我只能说,知识量有点大,我看了很久,原来JS中=>可以创建函数。
5、reverse()方法
用于反转数组中元素的顺序,原数组的顺序也被改变
function test6(){
var arr1 = [13,24,51,3];
console.log(arr1.reverse().join())
console.log(arr1.join())
}
注意:反转后原数组也被改变
6、concat()方法
用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本
function test7(){
var arr1 = [1,3,5,7,'a']
var arrCopy = arr1.concat('b','c',[11,13])
console.log(arrCopy.join())
console.log(arr1.join())
}
7、slice()方法
返回从原数组中指定开始下标到结束下标之间的项组成的新数组,可以接受一或两个参数,即要返回项的起始和结束位置(不包括结束位置的项),语法如下,其中有,如果参数为负数,代表从右往左数,如果参数大于数组长度,会返回空数组
array.slice(start,end)
下面我们来看看示例代码:
function test8(){
var arr1 = [0,1,2,3,4,5,6]
var arrCopy = arr1.slice(1)
var arrCopy1 = arr1.slice(10)
var arrCopy2 = arr1.slice(1,4)
var arrCopy3 = arr1.slice(1,-2)
console.log('arr1:'+arr1.join())
console.log('arrCopy:'+arrCopy.join())
console.log('arrCopy1:'+arrCopy1.join())
console.log('arrCopy2:'+arrCopy2.join())
console.log('arrCopy3:'+arrCopy3.join())
}
注意看以上结果:我们使用Slice方法后,原数组并没有被改变。
8、forEach()方法
function test10(){
var arr = [1,2,3,4,5,6]
var sum =0
arr.forEach(function(val,i,ar){
if(ar[i] < 5){
sum+=val}
})
console.log(sum)
}
如上图所示,只需把前面的function改为括号后的=>即可
9、map()方法
返回一个新数组,会按照原始数组元素顺序依次处理元素,他的参数与forEach一样也是一个函数
function test11(){
let arr = [1, 2, 3, 4, 5];
let Arr2= arr.map((item) => {
return item * item;
})
console.log(Arr2.join())
}
10、every()方法
判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true
function test12(){
var arr1 = [1,2,3,4,5]
var arr2 = arr1.every(x => {
return x < 10
});
console.log(arr2)
var arr3 = arr1.every(x => {
return x < 3;
});
console.log(arr3)
}
11、splice()方法
可以实现删除、插入和替换,语法如下
array.splice(start,deleteCount,item...)
解释:splice方法从array中移除一个或多个数组,并用新的item替换它们。参数start是从数组array中移除元素的开始位置。参数deleteCount是要移除的元素的个数。
如果有额外的参数,那么item会插入到被移除元素的位置上。它返回一个包含被移除元素的数组。
function test13(){
//替换
var a=['a','b','c'];
var b=a.splice(1,1,'e','f')
console.log(a.join())
console.log(b.join())
//删除
var arr1 = [1,3,5,7,9,11];
var arrRemoved = arr1.splice(0,2);
console.log(arr1.join())
console.log(arrRemoved.join())
// 添加元素
var arr1 = [22,3,31,12];
arr1.splice(1,0,12,35);
console.log(arr1.join())
}
注意:二参为零则不删除任何元素,一参为参入元素的位置,三参即后续参数全都会按顺序插入到一参指定的位置
11、some()方法
判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true,跟every相反
function test14(){
var arr1 = [1,2,3,4,5]
var arr2 = arr1.some(x => {
return x < 3
})
console.log(arr2)
var arr3 = arr1.some(x => {
return x < 1
});
console.log(arr3)
}
13、reduce()和reduceRight()
注意:回调函数后还可以写一个参数,也会参与运算
14、toLocaleString()和toString()
将数组转换为字符串
function test16(){
var arr1 = [1,2,3,4]
let str = arr1.toLocaleString()
var str2 = arr1.toString()
console.log(str)
console.log(str2)
}
15、find()和findIndex()
function test18(){
let arr = [1,2,3,4,5];
let num = arr.find((val,i,ar) => val > 3);
console.log(num)
let num1 = arr.findIndex((val,i,ar) => val > 3);
console.log(num1)
}
16、entries()、keys()和values()
entries()、keys()和values()--用于遍历数组。它们都返回一个遍历器对象,可以用for...of循环进行遍历
区别是keys()是对键名的遍历、values()是对键值的遍历、entries()是对键值对的遍历
function test18(){
let arr=['a','b']
let str1="",str2="",str3="",str4=""
for(let i of arr.keys()){
str1=str1+ ' '+i
}
console.log(str1)
for(let val of arr.values()){
str2=str2+ ' '+val
}
console.log(str2)
for(let [i,val] of arr.entries()){
str3=str3+' '+i
str4=str4+' '+val
}
console.log(str3 +' '+str4)
}
17、indexOf()和lastIndexOf()
indexof方法可以在字符串和数组上使用。indexOf() 方法可返回某个指定的字符串值(基本数据类型)在字符串、数组中首次出现的位置。lastIndexOf():检测当前值在数组中最后一次出现的位置索引
function test19(){
let arr = ['mfg', '2017', '2016'];
console.log(arr.indexOf('mfg'))// 0
console.log(arr.indexOf('m')) // -1
console.log(arr.indexOf('2017'))// 1
console.log(arr.indexOf(2017)) // -1
}
注意:需要数据类型一致才能被找到
18、includes()
用来判断一个数组、字符串是否包含一个指定的值(基本数据类型),使用===运算符来进行值比较,如果是返回true,否则false,参数有两个,第一个是(必填)需要查找的元素值,第二个是(可选)开始查找元素的位置
function test20(){
var arr1 = [22,3,31,12,58];
var includes = arr1.includes(31);
console.log(includes); // true
var includes2 = arr1.includes(31,3); // 从索引3开始查找31是否存在
console.log(includes2); // false
var includes3 = arr1.includes(31,-1); // 从最后一个开始向后查找31是否存在
console.log(includes3); // false
}
function test21(){
var arr1 = [1,2,3,4]
let arr=arr1.filter((val,i,ar)=>val>1
)
console.log(arr.toString())
}
好了,本期教程就到这里啦,走过路过的点个关注分享一下吧,谢谢啦,如果你是一个VBA小白,想要了解该如何开始学习VBA,建议看看以下文章
Excel VBA学习路线知识框架梳理(小白VBA入门必看-建议收藏)