javascript - 通过过滤连接两个数组

标签 javascript arrays loops for-loop lodash

我有两个数组。我需要将它们结合起来并制作一个新数组,其中包含 dayOfWeek 2、3、4、5、6。这意味着 dayOfWeek 的优先级在 中数组 1。意味着需要从 array1 中保留 dayOfWeek 3、4、5。

array1 = [
  {dayOfWeek: 2, home1: "01:30"},
  {dayOfWeek: 3, home1: "02:30"},
  {dayOfWeek: 4, home1: "03:30"},
  {dayOfWeek: 5, home1: "04:30"},
]

array2 = [
  {dayOfWeek: 3, home1: "05:30"},
  {dayOfWeek: 4, home1: "06:30"},
  {dayOfWeek: 5, home1: "07:30"},
  {dayOfWeek: 6, home1: "08:30"},
]

输出应该是

finalArray = [
  {dayOfWeek: 2, home1: "01:30"},
  {dayOfWeek: 3, home1: "02:30"},
  {dayOfWeek: 4, home1: "03:30"},
  {dayOfWeek: 5, home1: "04:30"},
  {dayOfWeek: 6, home1: "08:30"},
]

我试过了,但它从两个数组中推送了 dayOfWeek。我如何过滤它们?

const finalArray = []
array1.map((a) => {
    array2.map((a2) => {
        if (a.dayOfWeek === a2.dayOfWeek) {
          finalArray.push(a)
        }
        if (a.dayOfWeek === a2.dayOfWeek) {
          finalArray.push(a2)
        }
    })
})

提前致谢!!!

最佳答案

您也可以简单地过滤第二个数组以查找第一个数组中缺少的项目,然后将它们连接到第一个数组而不使用 lodash:

const a1 = [ {dayOfWeek: 2, home1: "01:30"}, {dayOfWeek: 3, home1: "02:30"}, {dayOfWeek: 4, home1: "03:30"}, {dayOfWeek: 5, home1: "04:30"}, ]
const a2 = [ {dayOfWeek: 3, home1: "05:30"}, {dayOfWeek: 4, home1: "06:30"}, {dayOfWeek: 5, home1: "07:30"}, {dayOfWeek: 6, home1: "08:30"}, ]

const r = a1.concat(a2.filter(x => !a1.some(y => y.dayOfWeek == x.dayOfWeek)))

console.log(r)

这是通过 Array.concatArray.filterArray.some 完成的

关于javascript - 通过过滤连接两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53442591/

相关文章:

javascript - 如何在 javascript 数组中查找条件第一次出现的索引(在我的例子中为 > 0)

javascript - 在 Chrome 中运行时如何使用 Cypress 测试文件下载

java - 使用排序方法逻辑时并非所有数组元素都显示

java - Java 中的 While 循环具有多个条件

python - 多重分组(迭代或应用函数)

javascript - 尝试扫描二维码然后调用 API

javascript - 创建元素时运行函数

java - 在 Java 中添加到 ArrayDeque 的前面

javascript - 使用 array.map() 更改数组索引

r - 您如何从字符向量中重复采样直到出现特定序列?