javascript - 使用过滤连接两个数组
问题描述
我有两个数组。我需要将它们结合起来并创建一个具有 2、3、4、5、6 的新数组dayOfWeek
。这意味着dayOfWeek
in的优先级array1
。意味着需要保留dayOfWeek
3, 4, 5 从array1
.
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
推荐阅读
- ubuntu-18.04 - 将 10.20.20.1 网络更改为我的 VMware 网络
- android - 当 targetSdkVersion = 30 时,Android 11 之前的包可见性
- javascript - 自定义事件不是函数,Puppeteer
- node.js - 上传的文件必须是非空 zip(服务:AWSLambdaInternal;状态代码:400;错误代码:InvalidParameterValueException;
- mongodb - 使用 mongoose .save() 时对象不是最新的
- hybris - 如何让 Hybris CMSParagraphComponent 打印变量值
- ruby-on-rails - 活动存储导轨保存 blob 和附件数据,但存储中没有文件
- java - CodenameOne - 内部类导致 dex 构建错误
- javascript - 在javascript中将变量的值解析为另一个变量
- swift - Swift UI @ObservedObject 不起作用,在实现另一个协议时发现奇怪的行为