forEach()、Array.map()和Array.filter()用法

Array.forEach()

forEach()方法为每个数组元素调用一次函数(回调函数)。

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>JavaScript Array.forEach()</title>
<body>

<h2>JavaScript Array.forEach()</h2>

<p>为每个数组元素调用一次函数。</p>

<p id="demo"></p>

<script>
    var txt = "";
    var numbers = [45, 4, 9, 16, 25];
    numbers.forEach(myFunction);
    document.getElementById("demo").innerHTML = txt;

    function myFunction(value, index, array) {
        txt = txt + value + "<br>";
    }
</script>

</body>
</html>

请注意,该函数有3个参数:

  • 元素值
  • 元素索引
  • 数组本身

上面的示例仅使用value参数。该示例可以重写为:

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>JavaScript Array.forEach()</title>

<body>

<h2>JavaScript Array.forEach()</h2>

<p>为每个数组元素调用一次函数。</p>

<p id="demo"></p>

<script>
    var txt = "";
    var numbers = [45, 4, 9, 16, 25];
    numbers.forEach(myFunction);
    document.getElementById("demo").innerHTML = txt;

    function myFunction(value) {
        txt = txt + value + "<br>";
    }
</script>

</body>
</html>

Array.map()

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

此示例将每个数组值乘以2:

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>JavaScript Array.map()</title>
<body>

<h2>JavaScript Array.map()</h2>

<p>通过对每个数组元素执行函数来创建新数组。</p>

<p id="demo"></p>

<script>
    var numbers1 = [45, 4, 9, 16, 25];
    var numbers2 = numbers1.map(myFunction);

    document.getElementById("demo").innerHTML = numbers2;

    function myFunction(value, index, array) {
        return value * 2;
    }
</script>

</body>
</html>

请注意,该函数有3个参数:

  • 元素值
  • 元素索引
  • 数组本身

当回调函数仅使用value参数时,可以省略索引和数组参数:

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Array.map()</h2>

<p>通过对每个数组元素执行函数来创建新数组。</p>

<p id="demo"></p>

<script>
    var numbers1 = [45, 4, 9, 16, 25];
    var numbers2 = numbers1.map(myFunction);

    document.getElementById("demo").innerHTML = numbers2;

    function myFunction(value) {
        return value * 2;
    }
</script>

</body>
</html>

Array.filter()

filter()方法创建一个新数组,其中包含传递测试的数组元素。此示例从值大于18的元素创建新数组:

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>JavaScript Array.filter()</title>
<body>

<h2>JavaScript Array.filter()</h2>

<p>使用通过测试的所有数组元素创建一个新数组。</p>

<p id="demo"></p>

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

    document.getElementById("demo").innerHTML = over18;

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

</body>
</html>

请注意,该函数有3个参数:

  • 元素值
  • 元素索引
  • 数组本身
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>JavaScript Array.filter()</title>
<body>

<h2>JavaScript Array.filter()</h2>

<p>使用通过测试的所有数组元素创建一个新数组。</p>

<p id="demo"></p>

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

    document.getElementById("demo").innerHTML = over18;

    function myFunction(value) {
        return value > 18;
    }
</script>

</body>
</html>

更多数组迭代的方法

原文地址:https://blog.51cto.com/13578973/2419749

时间: 2024-11-05 14:44:30

forEach()、Array.map()和Array.filter()用法的相关文章

js的Array高阶函数常用方法forEach、map、reduce

1.forEach方法用于调用数组的每一个元素,并将元素传递给回调函数. array.forEach(function(currentValue,index,arr),thisValue); 1.currentValue 必须.当前元素.2.index 可选.当前元素的索引值.3.arr 可选.当前元素所对应的数组对象4.thisValue 可选.传递给函数的值一般用this值,如果这个参数为空,"undefined"会传递给"this"值 2.map()方法返回一

js遍历集和(Array,Map,Set) (forEach, map, for, for...in, for...of)

1.Array可以使用下标,Map和Set不能使用下标,ES6引入了iterable类型,Array,Map,Set都属于iterable类型,它们可以使用for...of循环来遍历: var a = ['A', 'B', 'C']; var s = new Set(['A', 'B', 'C']); var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]); for (var x of a) { // 遍历Array   alert(x); } for (

对 forEach(),map(),filter(),reduce(),find(),every(),some()的理解

1.forEach() 用法:array.forEach(function(item,index){}) 没有返回值,只是单纯的遍历 2.map() 用法:array.map(function(item,index){}) 遍历并对其进行操作,返回新数组,原数组不变 3.filter() 用法:array.filter(function(item,index){}) 筛选符合条件的元素并返回新数组,原数组不变 4.find() 用法:array.find(function(item,index)

js Array Map and Set

Array slice slice()就是对应String的substring()版本,它截取Array的部分元素,然后返回一个新的Array: var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: ['A', 'B', 'C'] arr.slice(3); // 从索引3开始到结束: ['D', 'E', 'F', 'G'] Note:slice()的起止参数包括开始索

[转] 对 forEach(),map(),filter(),reduce(),find(),every(),some()的理解

1.forEach() 用法:array.forEach(function(item,index){}) 没有返回值,只是单纯的遍历 2.map() 用法:array.map(function(item,index){}) 遍历并对其进行操作,返回新数组,原数组不变 3.filter() 用法:array.filter(function(item,index){}) 筛选符合条件的元素并返回新数组,原数组不变 4.find() 用法:array.find(function(item,index)

js数组的map与forEach方法的区别及兼容性用法

高级浏览器(包括ie9以上)支持map和forEach方法对数组循环遍历,用法基本相同,但有些区别必须知道,才能在项目中正确选择 原理: 高级浏览器支持forEach方法语法:forEach和map都支持2个参数:一个是回调函数(item,index,list)和上下文: forEach:用来遍历数组中的每一项:这个方法执行是没有返回值的,对原来数组也没有影响: 数组中有几项,那么传递进去的匿名回调函数就需要执行几次: 每一次执行匿名函数的时候,还给其传递了三个参数值:数组中的当前项item,当

JavaScript数组方法的兼容性写法 汇总:indexOf()、forEach()、map()、filter()、some()、every()

ECMA Script5中数组方法如indexOf().forEach().map().filter().some()并不支持IE6-8,但是国内依然有一大部分用户使用IE6-8,而以上数组方法又确实非常好用.在过去,我会为了兼容性尽量不用这些方法.但是,总不能为了旧的丢了新的吧?!虽然说jQuery已经集成好了不少语法糖,但jQuery体积太庞大,作为一名志于体面的前端儿得知道原生的兼容性写法要怎么写.于是这几天,我开始在琢磨这些方法的兼容性写法.其实并不难,就是以前不够自信不敢写.写完以后,

js数组中的find、filter、forEach、map四个方法的详解和应用实例

1.find():返回通过测试的数组的第一个元素的值: 在第一次调用 callback 函数时会确定元素的索引范围,因此在 find 方法开始执行之后添加到数组的新元素将不会被 callback 函数访问到.如果数组中一个尚未被callback函数访问到的元素的值被callback函数所改变,那么当callback函数访问到它时,它的值是将是根据它在数组中的索引所访问到的当前值.被删除的元素仍旧会被访问到. 语法: array.find(function(value, index, arr),t

[Javascript] Array methods in depth - filter

Array filter creates a new array with all elements that pass the test implemented by the provided function. In this lesson we discuss how only a truthy or falsey value is required as the return value to the function, which in turns allows us to be cr