📌  相关文章
📜  如何将数组拆分为两个javascript(1)

📅  最后修改于: 2023-12-03 15:09:07.650000             🧑  作者: Mango

如何将数组拆分为两个 JavaScript

有时候我们需要把一个数组拆分成两个数组,可以按照某个条件来拆分,也可以按照索引值来拆分。本文将介绍两种常见的拆分方式。

按照条件拆分数组

如果我们要把一个数组按照某个条件拆分为两个数组,可以使用 Array.prototype.filter() 和 Array.prototype.reduce() 方法来实现。

Array.prototype.filter()

filter() 方法返回符合条件的数组元素,语法如下:

array.filter(callback(element[, index[, array]])[, thisArg])

其中 callback 函数接收三个参数:

  • element:数组中的元素
  • index(可选):数组中的索引
  • array(可选):调用 filter 的数组

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]

Array.prototype.reduce()

reduce() 方法将数组中的元素通过 callback 函数进行累加,语法如下:

array.reduce(callback[, initialValue])

其中 callback 函数接收四个参数:

  • accumulator:累加器
  • currentValue:当前元素的值
  • currentIndex(可选):当前元素的索引
  • array(可选):调用 reduce 的数组

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() 方法来实现。

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 的介绍。