美文网首页
数组-迭代器方法

数组-迭代器方法

作者: Ann_l | 来源:发表于2017-06-13 22:22 被阅读0次

不生成新数组的迭代器方法

forEach
//(forEach有三个参数,index,item,arr)
function square(num) {
  console.log(num, num * num)
}
var nums = [1, 2, 3, 4, 5, 6, 7, 8]
nums.forEach(square)
every

该方法接受一个返回值作为布尔类型的函数,如果该函数返回均为true,则该方法返回true。用俗语就是说:接受到的数据必须都是true,我这返回的才会是true。有点类似于js中的&

function isEven(num) {
 return num%2===0
 }
 var nums=[2,4,6,8,11]
 var even=nums.every(isEven)
 console.log(even)
 if (even){
 console.log('even')
 } else {
 console.log('single')
 }
some

该方法接收一个返回值为bool类型的函数,对数组中的每一个元素使用该函数。只要有一个元素使用该函数返回true,该方法就返回true。类似于js中的 ||

 function isEven(num) {
 return num%2===0
 }
 var nums=[1,2,3,4,5,6,7,8,9]
 var someEven=nums.some(isEven)
 if (someEven){
 console.log('some num is even')
 }else {
 console.log('no number is even')
 }
reduce

reduce接收一个函数,返回一个值。该方法相当于从一个累加值开始,不断对累加值和数组中的后续元素调用该函数。
元素求和:

function add(total,right) {
  return total+right
}
var nums=[1,2,3,4]
var sum=nums.reduce(add)
console.log(sum)
reduceRight()
var words=['w','a','l','k']
var sentence=words.reduceRight(concat)
console.log(sentence)//klaw

生成新数组的迭代器方法

map

他其实和 foreach一样,同样是遍历,但是map会返回新数组

function first(word) {
  return word[0]
}
var words=['dino','walk']
var acronym=words.map(first)
console.log(acronym.join(''))
filter

该方法传入一个返回值为布尔类型的函数。当返回结果都为true时,该方法将返回一个新数组。

function isEven(num) {
  return num % 2 === 0
}
function isOdd(num) {
  return num % 2 !== 0
}
var nums = []
for (let i = 0; i < 20; i += 1) {
  nums[i] = i + 1
}
var evens = nums.filter(isEven)
console.log(evens)
var odds = nums.filter(isOdd)
console.log(odds)
[ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 ]
[ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 ]

相关文章

网友评论

      本文标题:数组-迭代器方法

      本文链接:https://www.haomeiwen.com/subject/adkdqxtx.html