JS从入门到精通--数组
数组操作方法
JavaScript 提供了许多用于操作数组的方法。下面是一些常用的数组操作方法:
-
push():向数组末尾添加一个或多个元素,并返回修改后的数组的新长度。
const arr = [1, 2, 3]; arr.push(4); console.log(arr); // 输出 [1, 2, 3, 4]
-
pop():从数组末尾移除最后一个元素,并返回被移除的元素。
const arr = [1, 2, 3]; const removedElement = arr.pop(); console.log(arr); // 输出 [1, 2] console.log(removedElement); // 输出 3
-
unshift():向数组开头添加一个或多个元素,并返回修改后的数组的新长度。
const arr = [2, 3, 4]; arr.unshift(1); console.log(arr); // 输出 [1, 2, 3, 4]
-
shift():从数组开头移除第一个元素,并返回被移除的元素。
const arr = [1, 2, 3]; const removedElement = arr.shift(); console.log(arr); // 输出 [2, 3] console.log(removedElement); // 输出 1
-
concat():将两个或多个数组合并成一个新数组。
const arr1 = [1, 2]; const arr2 = [3, 4]; const mergedArray = arr1.concat(arr2); console.log(mergedArray); // 输出 [1, 2, 3, 4]
-
slice():从数组中截取指定位置的片段,并返回一个新数组,不会修改原数组。
const arr = [1, 2, 3, 4, 5]; const slicedArray = arr.slice(1, 4); console.log(slicedArray); // 输出 [2, 3, 4]
-
splice():从数组中移除、替换或插入元素,并返回被移除的元素组成的数组。
const arr = [1, 2, 3, 4, 5]; const removedElements = arr.splice(1, 2, 'a', 'b'); console.log(arr); // 输出 [1, 'a', 'b', 4, 5]
-
indexOf():返回指定元素在数组中首次出现的索引,如果不存在则返回 -1。
const arr = ['a', 'b', 'c']; console.log(arr.indexOf('b')); // 输出 1 console.log(arr.indexOf('d')); // 输出 -1
-
forEach():对数组中的每个元素执行指定的函数。
const arr = [1, 2, 3]; arr.forEach((element) => { console.log(element); }); // 输出: // 1 // 2 // 3
-
reverse():反转数组中元素的顺序,会修改原数组。
const arr = [1, 2, 3, 4, 5]; arr.reverse(); console.log(arr); // 输出 [5, 4, 3, 2, 1]
这只是一小部分常用的数组操作方法,JavaScript 还提供了许多其他方法,如 map()、filter()、reduce() 等,以及 ES6 引入的更多功能强大的数组方法。这些方法可以根据具体的需求和场景选择使用,以便更方便地操作和处理数组数据。
数组创建方法
JavaScript 提供了多种创建数组的方法,以下是一些常用的数组创建方法:
-
使用数组字面量(Array Literal):通过方括号 [] 创建一个新的数组,并在其中添加元素。
const arr = [1, 2, 3];
-
使用 Array 构造函数:使用 Array 构造函数来创建一个新的数组。
const arr = new Array(1, 2, 3);
-
使用 Array.from() 方法:从类数组对象或可迭代对象创建一个新数组。
const arr = Array.from('hello'); // 输出:['h', 'e', 'l', 'l', 'o']
-
使用 Array.of() 方法:根据传入的参数创建一个新数组,不管参数是什么类型。
const arr = Array.of(1, 2, 3); // 输出:[1, 2, 3]
-
使用 fill() 方法:创建一个指定长度并用指定值填充的新数组。
const arr = new Array(5).fill(0); // 输出:[0, 0, 0, 0, 0]
-
使用 Array.prototype.map() 方法:根据一个已有的数组创建一个新数组,新数组的元素是通过对原数组的每个元素进行处理得到的。
const arr1 = [1, 2, 3]; const arr2 = arr1.map((element) => element * 2); // 输出:[2, 4, 6]
-
使用 Array.prototype.filter() 方法:根据一个已有的数组创建一个新数组,新数组的元素是通过对原数组的每个元素应用指定条件过滤得到的。
const arr1 = [1, 2, 3, 4, 5]; const arr2 = arr1.filter((element) => element % 2 === 0);
这些方法提供了多种灵活的方式来创建数组,并且可以根据实际需求选择合适的方法。另外,数组还可以通过索引逐个赋值来创建,或者通过其他数组操作方法来创建和修改数组。
遍历数组
在JavaScript中,有多种方法可以遍历数组。以下是几种常见的方法:
- 使用for循环:
var myArray = [1, 2, 3, 4, 5];
for (var i = 0; i < myArray.length; i++) {
console.log(myArray[i]);
}
- 使用forEach方法:
var myArray = [1, 2, 3, 4, 5];
myArray.forEach(function(item) {
console.log(item);
});
- 使用map方法:
var myArray = [1, 2, 3, 4, 5];
myArray.map(function(item) {
console.log(item);
});
- 使用reduce方法:reduce方法可以对数组的每个元素执行一个归约操作,并返回一个结果。虽然主要用于归约操作,但在遍历数组时也可以使用它。例如:
var myArray = [1, 2, 3, 4, 5];
myArray.reduce(function(acc, item) {
console.log(item);
return acc;
}, 0);
- 使用some方法:some方法用于检查数组中是否存在满足指定条件的元素。尽管它的主要目的是返回布尔值,但在遍历数组时也可以使用它来执行一些操作。例如:
var myArray = [1, 2, 3, 4, 5];
myArray.some(function(item) {
console.log(item);
return false; // 返回false以继续遍历
});
需要注意的是,以上方法在不同的情况下可能会有微妙的差异,例如在使用forEach和map方法时,回调函数的参数可能包括当前元素、索引和原数组。根据具体的需求,选择适合的方法来遍历数组。
数组转化的方法
有许多方法可用于对数组进行转换。下面是一些常见的数组转换方法:
-
使用map方法:map方法可以对数组中的每个元素应用一个转换函数,并返回一个新的数组,新数组的每个元素都是转换后的结果。例如:
-
使用filter方法:filter方法可以根据指定的条件筛选数组中的元素,并返回一个新的数组,新数组只包含满足条件的元素。例如:
-
使用reduce方法:reduce方法可以对数组中的元素执行一个累积操作,并返回一个最终结果。通过指定累积函数和初始值,可以将数组转换为单个值。例如:
-
使用join方法:join方法可以将数组中的所有元素按照指定的分隔符连接成一个字符串。例如:
-
使用其他转换方法:除了上述方法,还有许多其他转换数组的方法,如sort(排序数组元素)、reverse(反转数组元素顺序)、slice(提取部分数组)等。这些方法可以根据具体需求进行使用。
这些方法可以单独使用,也可以组合使用,根据需求对数组进行不同的转换和操作。
关于数组转化
如果你想要改变原数组而不是创建一个新的数组,可以使用一些特定的方法来转换原数组。以下是几种常见的方法:
- 使用forEach方法:forEach方法可以对数组中的每个元素应用一个转换函数,因此可以在原数组上直接修改元素的值。例如:
- 使用for循环:通过使用for循环和索引,可以直接访问并修改原数组的元素。例如:
- 使用map方法(不推荐):尽管map方法通常会返回一个新的数组,但你也可以直接在回调函数中修改原数组的元素。但是这种用法通常不被推荐,因为它会改变map方法的原始意图。例如: 需要注意的是,修改原数组可能会对代码的可读性和维护性产生负面影响。如果你需要保留原始数组并创建一个新的转换后的数组,推荐使用上述提到的方法中的第一种方式。
不改变原数组的数组转化方式
如果你不想改变原数组,而是希望创建一个新的转换后的数组,可以使用以下方法:
- 使用map方法:map方法可以对数组中的每个元素应用一个转换函数,并返回一个新的数组,而不改变原数组。例如:
- 使用filter方法:filter方法可以根据指定的条件筛选数组中的元素,并返回一个新的数组,不包含满足条件的元素。例如:
- 使用slice方法:slice方法可以返回数组的一个子数组,而不修改原数组。例如:
- 使用其他转换方法:根据具体需求,还可以使用其他方法如concat(合并数组)、reduce(归约数组元素)等来创建新的转换后的数组。
这些方法都是在不改变原数组的前提下进行数组转换的常用方式。通过创建新的数组,你可以保留原始数据并在需要的时候使用转换后的数组。
转载自:https://juejin.cn/post/7283030649611010100