JS数组的迭代

forEach

forEach() 要领对数组的每一个元素实行一次供应的函数。

var array1 = ['a', 'b', 'c'];

array1.forEach(function(element) {
  console.log(element);
});

// expected output: "a"
// expected output: "b"
// expected output: "c"

forEach()是没有办法中断或许跳出轮回的,除非抛出一个非常。

map

map() 要领建立一个新数组,其效果是该数组中的每一个元素都挪用一个供应的函数后返回的效果。

var array1 = [1, 4, 9, 16];

// pass a function to map
const map1 = array1.map(x => x * 2);

console.log(map1);
// expected output: Array [2, 8, 18, 32]

map()与forEach()的区别是map返回一个轮回处置惩罚后的数组,不转变原数组的值,而forEach则只是遍历一遍数组,实行供应的函数。

for of

for…of语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上建立一个迭代轮回,挪用自定义迭代钩子,并为每一个差别属性的值实行语句

let iterable = [10, 20, 30];

for (const value of iterable) {
  console.log(value);
}
// 10
// 20
// 30

关于for…of语句遍历更多用法mdn

filter

filter() 要领建立一个新数组, 其包括经由过程所供应函数完成的测试的一切元素。

var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter(word => word.length > 6);

console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]

reduce

reduce() 要领对数组中的每一个元素实行一个由您供应的reducer函数(升序实行),将其效果汇总为单个返回值。

const array1 = [1, 2, 3, 4];
// 1 + 2 + 3 + 4
console.log(array1.reduce((accumulator, currentValue) => accumulator + currentValue));
// expected output: 10

every

every() 要领测试数组的一切元素是不是都经由过程了指定函数的测试。

function isBigEnough(element, index, array) {
  return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true

some

some() 要领测试是不是至少有一个元素经由过程由供应的函数完成的测试。
关于放在空数组上的任何条件,此要领返回false。

[2, 5, 8, 1, 4].some(x => x > 10);  // false
[12, 5, 8, 1, 4].some(x => x > 10); // true
    原文作者:大海怪
    原文地址: https://segmentfault.com/a/1190000018379317
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞