数组迭代方法

Array.forEach()

forEach() 方法为每个数组元素调用一次函数(回调函数)。该函数接受 3 个参数项目值、项目索引、数组本身。

个人理解:将数组中每个元素都作为一个参数去调用方法,执行一个回调函数,结果不返回,原数组没有改变。直接输出结果为undefined。

var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction); //25

function myFunction(value, index, array) {
  return value > 18;
}

Array.map()

map() 方法通过对每个数组元素执行函数来创建新数组。
map() 方法不会对没有值的数组元素执行函数。
map() 方法不会更改原始数组。

个人理解:能够调用方法并返回一个新数组,原数组没有改变。直接输出结果为调用函数后的数组。

var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);  //90,8,18,32,50

function myFunction(value, index, array) {
  return value * 2;
}

forEach()与map()的区别

两者都能return数据,但是forEach()没有返回值,如果不return数据的话,forEach()返回的是undefined,而map()返回了数组元素中间的(,)号

var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);  //,,,,
var numbers3 = numbers1.forEach(myFunction)  //undefined
function myFunction(value, index, array) {
  value * 2;
}

Array.filter()

filter()方法创建一个包含通过测试的数组元素的新数组。

个人理解:用于过滤数组元素。返回结果为过滤后的数组。

var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);  //45,25

function myFunction(value, index, array) {
  return value > 18;
}

filter()与map()、forEach()的区别

在上面的这个方法中,如果将filter()换成map(),返回的值是布尔型,符合条件为true,不符合为flase,换成forEach()返回undefined。

Array.reduce()

reduce() 方法在每个数组元素上运行函数,以生成(减少它)单个值。
reduce() 方法在数组中从左到右工作。另请参见 reduceRight()
reduce() 方法不会减少原始数组。

个人理解:从左到右执行,最终得到一个执行后的值,第一个参数为执行到当前index之前的结果,第二个参数为当前index。

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction);  //99

function myFunction(total, value, index, array) {
  return total + value;
}

reduce()可以接收一个初始值,就是说在初始值上计算数组元素的总和,初始值+元素总和。

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction, 100);  //199

function myFunction(total, value) {
  return total + value;
}

Array.reduceRight()

reduceRight() 方法在每个数组元素上运行函数,以生成(减少它)单个值。
reduceRight() 方法在数组中从右到左工作。另请参见 reduce()
reduceRight() 方法不会减少原始数组。

个人理解:与reduce()方法不同的是这个方法是从右到左执行。

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduceRight(myFunction,100);  //199

function myFunction(total, value, index, array) {
  return total + value;
}

Array.every()

every() 方法检查所有数组值是否通过测试。

个人理解:结果返回一个布尔值,如果所有数组元素都符合条件则返回true,否则返回flase。

var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);  //flase

function myFunction(value, index, array) {
  return value > 18;
}

every()与filter()、map()的区别

在上面的示例中,every()返回一个为flase的布尔值,因为数组元素并不是全部大于18,filter()返回所有大于18的元素,[45,25],map()返回一串布尔值,[true,flase,flase,flase,true],符合条件的为true,不符合为flase。

Array.some()

some() 方法检查某些数组值是否通过了测试。

个人理解:结果返回一个布尔值,如果有一个或以上数组元素都符合条件则返回true,否则返回flase。

var numbers = [45, 4, 9, 16, 25];
var someOver18 = numbers.some(myFunction);  //true

function myFunction(value, index, array) {
  return value > 18;
}

some()与every()的区别

some()every()的返回值都是一个布尔值,区别在于some()只要数组中有符合条件的元素就返回true,而every()需要数组元素全部符合条件才返回true。

Array.indexOf()

indexOf() 方法在数组中搜索元素值并返回其位置。

个人理解:从左往右搜索值为"Apple"的数组元素,返回找到的元素下标。第一个参数为搜索的值,第二个参数可选,为开始搜索的位置,负数则从数组末尾开始计算,但还是从左往右。

var fruits = ["Apple", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple",1);  //2

Array.lastIndexOf()

Array.lastIndexOf()Array.indexOf() 类似,但是从数组结尾开始搜索。

个人理解:与indexOf()的区别在于从右往左搜索值为“Apple”的数组元素。第二个参数没有变化,正数从左往右数下标,负数从右往左数下标

var fruits = ["Apple", "Orange", "Apple", "Mango"];
var a = fruits.lastIndexOf("Apple",1);  //2

Array.find()

find() 方法返回通过测试函数的第一个数组元素的

var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction); //25

function myFunction(value, index, array) {
  return value > 18;
}

Array.findIndex()

findIndex() 方法返回通过测试函数的第一个数组元素的索引

var numbers = [4, 9, 16, 25, 29];
var first = numbers.findIndex(myFunction);  //3

function myFunction(value, index, array) {
  return value > 18;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值