我有两个数组。我需要将它们结合起来并制作一个新数组,其中包含 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.concat
、Array.filter
和 Array.some
完成的
关于javascript - 通过过滤连接两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53442591/