前言
✨✨ JavaScript的数组是一种特殊的对象 - 属于JavaScript 标准内置对象
数组是值的有序集合。每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。
JavaScript 数组是无类型的: 数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型。数组的元素甚至也可能是对象或其它数组,这允许创建复杂的数据结构,如:对象的数组,和数组的数组。
提示:以下主要记录开发过程中遇到常用的数组API,便于查找
🔥 一、forEach()
forEach() 方法 对数组的每个元素执行一次给定的函数。
语法: forEach(
callbackFn
, thisArg )
callbackFn
:为数组中每个元素执行的函数。并会丢弃它的返回值。该函数被调用时将传入以下参数:element:数组中正在处理的当前元素。 index: 数组中正在处理的当前元素的索引。 array: 调用了 forEach() 的数组本身。
thisArr
(可选) :执行 callbackFn 时用作 this 的值。
返回值: undefined
使用1:元素是原始类型,【不会】 改变原数组
let arr = [2, 4, 6];
let newArr = arr.forEach(function (element, index, array) {
console.log("数组中正在处理的当前元素 : ", element);
console.log("数组中正在处理的当前元素的索引 : ", index);
console.log("调用了 forEach() 的数组本身 : ", array);
element *= 2;
});
console.log("【newArr】= ", newArr);
console.log("【arr】= ", arr);
// ******** 箭头函数简写 ******** //
let arr = [2, 4, 6];
let newArr = arr.forEach((element, index, array) => element *= 2);
console.log("【newArr】= ", newArr);
console.log("【arr】= ", arr);
打印如下:
使用2:元素是引用类型,【会】 改变原数组
let arr = [
{
name: "小明", age: 19 },
{
name: "丫丫", age: 18 },
{
name: "小红", age: 17 },
];
let newArr = arr.forEach((element, index, array) => element.age += 2);
console.log("【newArr】= ", newArr);
console.log("【arr】= ", arr);
打印如下:
说明:
forEach() 方法是一个迭代方法。它按索引升序地为数组中的每个元素调用一次提供的 callbackFn
函数。与 map() 不同,forEach() 总是返回 undefined
,而且不能继续链式调用。其典型的用法是在链式调用的末尾执行某些操作。
⚠️
注意:!!!!!
(1)forEach() 对于空数组是不会执行回调函数的。
(2)除非抛出异常,否则没有办法停止或中断 forEach() 循环,它总是会将所有成员遍历完。如果希望符合 某个条件就中断循环,要使用for循环。
🔥 二、filter()
filter() 方法 用来筛选(过滤)数组中符合条件的元素,将符合条件的所有元素放入新数组中返回。
语法: filter(
callbackFn
, thisArg )
callbackFn
:为数组中每个元素执行的函数。该函数返回true
或false
,根据函数的返回值来确定哪些元素将保留在结果数组中。该函数被调用时将传入以下参数:element:数组中正在处理的当前元素。 index: 数组中正在处理的当前元素的索引。 array: 调用了 filter() 的数组本身。
thisArr
(可选) :执行 callbackFn 时用作 this 的值。
返回值: 返回一个新数组
,由通过提供的函数测试的元素组成。如果没有元素通过测试,则返回一个空数组。
使用1:元素是原始类型,【不会】 改变原数组
let arr = [1, 2, 3];
let newArr = arr.filter(function (element, index, array) {
console.log("