数组API之操作方法、位置方法和迭代方法

目录

操作方法

Array.prototype.concat()         用于连接两个或多个数组。

 Array.prototype.slice()         可从已有的数组中返回选定的元素、可提取字符串的某个部分,并以新的字符串返回被提取的部分。

 Array.prototype.splice()         用于添加或删除数组中的元素。

位置方法

Array.prototype.indexOf()        可返回数组中某个指定的元素位置。

 Array.prototype.lastIndexOf()         可返回一个指定的元素在数组中最后出现的位置,从该字符串的后面向前查找。

迭代方法

Array.prototype.every()

Array.prototype.some()

Array.prototype.forEach()

Array.prototype.filter()

Array.prototype.map()


操作方法

Array.prototype.concat()         用于连接两个或多个数组。

语法:array1.concat(array2,array3,...,arrayX)

参数值

返回值 

// concat 连接数组  拼接两个及两个以上的数组
// 参数 需要拼接的数组 返回值 拼接后的数组 不改变原数组
var arr = ['world'];
var arr1 = ['hello'];
var arr2 = ['js'];
var res = arr1.concat(arr,arr2);
console.log(res,arr);

 Array.prototype.slice()         可从已有的数组中返回选定的元素、可提取字符串的某个部分,并以新的字符串返回被提取的部分。

语法:array.slice(start, end)

参数值

返回值: 

// slice()   截取元素
var arr = [1,2,3,4,5,6];
//参数 start end 返回从第一个下标开始到第二个下标(不包括第二个下标元素)截取元素组成的新数组 不改变原数组 
var res = arr.slice(2,5);
console.log(res,arr);
// 参数start  返回从下标开始到末尾截取的元素组成的新数组    不改变原数组
var res = arr.slice(2);
console.log(res,arr);
// 参数start负数    返回从倒数下标开始到末尾截取的元素组成的新数组  不改变原数组
var res = arr.slice(-2);
console.log(res,arr);
// 参数start负数 end负数 返回从倒数第一个下标开始到倒数第二个下标(不包括第二个下标元素)组成的新数组 不改变原数组 
var res = arr.slice(-4,-2);
console.log(res,arr);
// 参数start正数 end负数 返回从第一个下标开始到倒数第二个下标(不包括第二个下标元素)组成的新数组 不改变原数组 
var res = arr.slice(2,-2);
console.log(res,arr);
// 参数start负数 end正数 返回从倒数第一个下标开始到第二个下标(不包括第二个下标元素)组成的新数组 不改变原数组 
var res = arr.slice(-4,4);
console.log(res,arr);
// 参数大于等于数组长度 返回空数组
var res = arr.slice(6);
console.log(res,arr);

 Array.prototype.splice()         用于添加或删除数组中的元素。

注意:这种方法会改变原始数组。

语法

返回值 :

 因会改变原数组,所以注释了起来,如需使用,请一个一个消除注释使用。       

注释快捷键        Ctrl+/

// splice() 添加元素 / 删除元素     howmany可以不写 写了必须大于等于0;
var arr = [1,2,3,4,5];  
// 参数index>0  返回从下标开始到末尾删除元素所组成的新数组 改变原数组
var res = arr.splice(2);    //[ 3, 4, 5 ] [ 1, 2 ]
// 参数index>0 howmany>0 返回从下标开始删除howmany位元素所组成的新数组 改变原数组
// var res = arr.splice(2,2);
// 参数index>0 howmany>0 item 返回从下标开始删除howmany位元素所组成的新数组 改变原数组
// var res = arr.splice(2,2,'hello js')
// 参数index>0 howmany=0 item 返回空数组  改变原数组
// var res = arr.splice(2,0,'hello');
// 参数index<0  返回从倒数下标开始到末尾删除元素所组成的新数组 改变原数组
// var res = arr.splice(-2);
// 参数index<0 howmany>0 返回从倒数下标开始删除howmany位元素所组成的新数组 改变原数组
// var res = arr.splice(-4,2);
// 参数index<0 howmany>0 item 返回从倒数下标开始删除howmany位元素所组成的新数组 改变原数组
// 同上面没item 区别插入没插入新的内容
console.log(res,arr);

位置方法

Array.prototype.indexOf()        可返回数组中某个指定的元素位置。

该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。如果在数组中没找到指定元素则返回 -1。

语法:array.indexOf(item,start)

参数:

返回值: 

// indexOf 
var arr = [1,2,3,2,3,1,4,3];
// 参数要查找的值 从头开始查找 返回值 有则返回下标 无则返回-1 不改变原数组
var res = arr.indexOf(4);
console.log(res,arr);
// 参数要查找的值 从第几位开始查找  返回值 有则返回下标 无则返回-1 不改变原数组
var res = arr.indexOf(2,2);
console.log(res,arr);

 Array.prototype.lastIndexOf()         可返回一个指定的元素在数组中最后出现的位置,从该字符串的后面向前查找。

该方法将从尾到头地检索数组中指定元素 item。开始检索的位置在数组的 start 处或数组的结尾(没有指定 start 参数时)。如果找到一个 item,则返回 item 从尾向前检索第一个次出现在数组的位置。数组的索引开始位置是从 0 开始的。如果在数组中没找到指定元素则返回 -1。

语法:array.lastIndexOf(item,start)

参数:

返回值:

// lastIndexOf
// 参数要查找的值 从末尾开始查找 返回值 有则返回下标 无则返回-1 不改变原数组
var res = arr.lastIndexOf(2);
console.log(res,arr);
// 参数要查找的值 从第几位开始查找 返回值 有则返回下标 无则返回-1 不改变原数组
var res = arr.lastIndexOf(2,2);
console.log(res,arr);

迭代方法

Array.prototype.every()

every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。

every() 方法使用指定函数检测数组中的所有元素:

  • 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。

  • 如果所有元素都满足条件,则返回 true。

注意: every() 不会对空数组进行检测。

注意: every() 不会改变原始数组。

语法:array.every(function(currentValue,index,arr), thisValue)

参数:

 返回值:布尔值。如果所有元素都通过检测返回 true,否则返回 false。

// every 判断数组中每一个元素是否符合内部表达式
// 参数 函数(item,index,arr)    返回值:true false  只要有一项不符合就跳出循环 不修改原数组
var arr = [1,2,3,4,5];
var res = arr.every(function(item,index){
    // 无第二个参数时,this指的是global
    console.log(this);
    // 当有第二个参数时,this指的是第二个参数
    return item>1;
},'hello')
console.log(res,arr);

Array.prototype.some()

some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。

some() 方法会依次执行数组的每个元素:

  • 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。

  • 如果没有满足条件的元素,则返回false。

注意: some() 不会对空数组进行检测。

注意: some() 不会改变原始数组。

语法:array.some(function(currentValue,index,arr),thisValue)

参数:

返回值:布尔值。如果数组中有元素满足条件返回 true,否则返回 false。

// some 判断数组中有没有一个元素符合内部表达式
// 参数 函数(item,index,arr)    返回值:true false 只要有一项符合就跳出循环 不修改原数组
var arr = [1,2,3,4,5];
var res = arr.some(function(item){
    return item >1;
})
console.log(res,arr);

Array.prototype.forEach()

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

注意: forEach() 对于空数组是不会执行回调函数的。

语法:array.forEach(function(currentValue, index, arr), thisValue)

参数:

 

返回值:undefined。

// forEach  for循环升级版
// 
var arr = [1,2,3,4,5];
var res = arr.forEach(function(item,index,arr){
    console.log(item);
    console.log(index);
    console.log(arr);
    // 加上返回值也是undefined
    return 10;
})
console.log(res,arr);

Array.prototype.filter()

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

注意: filter() 不会对空数组进行检测。

注意: filter() 不会改变原始数组。

语法:array.filter(function(currentValue,index,arr), thisValue)

参数:

 

返回值:返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。

// filter   过滤出符合条件的数组元素组成的新数组
// 参数 function(item,index,arr){}  返回值:返回复合函数表达式的数组元素所组成的新数组  不修改原数组
var ages = [18,23,17,22,46];
var res = ages.filter(function(item,index,arr){
    console.log(this);
    return item > 22;
},'hello');
console.log(res,ages);

Array.prototype.map()

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

注意: map() 不会对空数组进行检测。

注意: map() 不会改变原始数组。

语法:array.map(function(currentValue,index,arr), thisValue)

参数:

 

返回值:返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

// map方法      映射    对数组每一个元素进行处理返回一个新的数组
// 参数 function(item,index,arr){}  返回值:返回对每一个数组元素进行处理后的新数组   不修改原数组

var arr = [1,2,3,4,5];
var res = arr.map(function(item,index,arr){
    return item*10;
})
console.log(res,arr);

var data = [
    {id:1,name:'zhangsan'},
    {id:2,name:'lisi'},
    {id:3,name:'wangwu'},
    {id:4,name:'terry'},
    {id:5,name:'mary'},
]

var res = data.map(function(item){
    return item.id
});
console.log(res);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学前端的狗头苏丹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值