📜  js concat arrays with redeuce - Javascript (1)

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

使用reduce拼接JavaScript数组

在JavaScript中,我们经常需要将多个数组拼接为一个。这可以使用reduce方法轻松完成。reduce方法接受一个函数作为参数,该函数可以执行任何操作。在这里,我们将使用reduce将多个数组拼接为一个数组。

简单示例
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const arr3 = [7, 8, 9];

const combinedArray = [arr1, arr2, arr3].reduce((acc, current) => [...acc, ...current], []);

console.log(combinedArray); // [1,2,3,4,5,6,7,8,9]

在这个例子中,我们有三个数组:arr1,arr2和arr3。我们将它们作为一个数组传递给reduce方法。reduce方法接受一个初始值,我们将其设置为空数组。接下来,我们定义一个回调函数,该回调函数需要接受两个参数:累加器和当前数组。

回调函数将使用展开运算符将当前数组拼接到累加器中,并返回新数组。在这种情况下,回调函数将类似于:

(acc, current) => [...acc, ...current]

最后,reduce方法将返回所有数组的组合,数组中的所有项都将被拼接在一起。

更复杂的示例

现在,让我们看一个更复杂的示例,该示例将演示如何使用reduce按照特定的条件拼接数组。

const users = [
  { name: "John", age: 20, status: "active" },
  { name: "Jane", age: 24, status: "inactive" },
  { name: "Mark", age: 30, status: "active" },
  { name: "Maria", age: 18, status: "inactive" },
  { name: "David", age: 25, status: "active" },
];

const activeUsers = users.reduce(
  (acc, current) => { 
    if (current.status === "active") { 
      return [...acc, current];
    } else { 
      return acc;
    }
  },
  []
);

console.log(activeUsers); // [{ name: "John", age: 20, status: "active" },{ name: "Mark", age: 30, status: "active" },{ name: "David", age: 25, status: "active" }]

在这个例子中,我们有一个名为users的对象数组。我们想要从数组中提取所有状态为“active”的用户。要做到这一点,我们传递了一个回调函数作为reduce的第一个参数。

在回调函数中,我们首先检查当前对象的状态是否为“active”。如果当前对象的状态为“active”,我们将其添加到累加器数组中,如果当前对象的状态为“inactive”,我们返回原始累加器数组。

最后,reduce方法将返回包含所有状态为“active”的用户的数组。

结论

使用reduce方法,我们可以轻松地将多个数组拼接为一个数组。要做到这一点,我们只需要使用reduce方法和一个回调函数,该回调函数执行所有必要的操作。最终,reduce方法将返回所有数组的组合。