📅  最后修改于: 2023-12-03 15:09:07.650000             🧑  作者: Mango
有时候我们需要把一个数组拆分成两个数组,可以按照某个条件来拆分,也可以按照索引值来拆分。本文将介绍两种常见的拆分方式。
如果我们要把一个数组按照某个条件拆分为两个数组,可以使用 Array.prototype.filter() 和 Array.prototype.reduce() 方法来实现。
filter() 方法返回符合条件的数组元素,语法如下:
array.filter(callback(element[, index[, array]])[, thisArg])
其中 callback 函数接收三个参数:
callback 函数应该返回一个布尔值,表示元素是否符合条件。如果返回 true,元素将被保留;如果返回 false,元素将被过滤掉。
举个例子,如果我们要把数组中的偶数拆分成一个新数组,代码如下:
const arr = [1, 2, 3, 4, 5, 6];
const newArr = arr.filter((item) => {
return item % 2 === 0;
});
console.log(newArr); // [2, 4, 6]
reduce() 方法将数组中的元素通过 callback 函数进行累加,语法如下:
array.reduce(callback[, initialValue])
其中 callback 函数接收四个参数:
callback 函数的返回值会被当作累加器的值传递给下次调用 callback 函数。
我们可以使用 reduce() 方法来把数组分成两部分,代码如下:
const arr = [1, 2, 3, 4, 5, 6];
const [, even] = arr.reduce((acc, item) => {
if (item % 2 === 0) {
acc[1].push(item);
} else {
acc[0].push(item);
}
return acc;
}, [[], []]);
console.log(even); // [2, 4, 6]
如果我们要把一个数组按照索引拆分为两个数组,可以使用 Array.prototype.slice() 方法来实现。
slice() 方法返回一个从开始到结束(不包括结束)选择的数组部分的浅拷贝,语法如下:
array.slice([begin[, end]])
其中 begin 和 end 分别表示选取部分的开始和结束位置。如果省略 end 参数,则 slice() 方法将把数组的剩余部分选取出来。
如果我们要把数组的前一半拆分成一个新数组,代码如下:
const arr = [1, 2, 3, 4, 5, 6];
const mid = Math.floor(arr.length / 2);
const arr1 = arr.slice(0, mid);
const arr2 = arr.slice(mid);
console.log(arr1); // [1, 2, 3]
console.log(arr2); // [4, 5, 6]
以上就是如何将数组拆分为两个 JavaScript 的介绍。