Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中从一个数组中搜索另一个数组中的每个值_Javascript_Arrays - Fatal编程技术网

在Javascript中从一个数组中搜索另一个数组中的每个值

在Javascript中从一个数组中搜索另一个数组中的每个值,javascript,arrays,Javascript,Arrays,求你了,我需要你的帮助。 我有一个日期范围数组: dateRange = [1 Jun 2020, 2 Jun 2020, 3 Jun 2020, 4 Jun 2020, 5 Jun 2020]; 以及一系列优惠: offers = [ {DeskUID: "B200B3", Day: 1 Jun 2020} {DeskUID: "B200B3", Day: 2 Jun 2020} {DeskUID: "B200B3", Day: 3 Jun 2020} {DeskUID: "B200B3",

求你了,我需要你的帮助。 我有一个日期范围数组:

dateRange = [1 Jun 2020, 2 Jun 2020, 3 Jun 2020, 4 Jun 2020, 5 Jun 2020];
以及一系列优惠:

offers = [
{DeskUID: "B200B3", Day: 1 Jun 2020}
{DeskUID: "B200B3", Day: 2 Jun 2020}
{DeskUID: "B200B3", Day: 3 Jun 2020}
{DeskUID: "B200B3", Day: 4 Jun 2020}
{DeskUID: "B200B3", Day: 5 Jun 2020}
{DeskUID: "B211B5", Day: 3 Jun 2020}
{DeskUID: "B211B5", Day: 4 Jun 2020}
]
如何创建一个结果数组,其中只包含来自offers数组的offers,该数组在dateRange数组中每一天都有条目

result = [
{DeskUID: "B200B3", Day: 1 Jun 2020}
{DeskUID: "B200B3", Day: 2 Jun 2020}
{DeskUID: "B200B3", Day: 3 Jun 2020}
{DeskUID: "B200B3", Day: 4 Jun 2020}
{DeskUID: "B200B3", Day: 5 Jun 2020}
]
解决方案必须在IE11中工作-无箭头功能

编辑: 如果我有下面这样的数组,你的函数会给我错误的结果

dateRange = ['1 Jun 2020', '2 Jun 2020', '3 Jun 2020']

offers = [ 
    {DeskUID: "B201A10", Day: '1 Jun 2020'} 
    {DeskUID: "B201A10", Day: '2 Jun 2020'} 
    {DeskUID: "B211A15", Day: '1 Jun 2020'} 
    {DeskUID: "B211A15", Day: '2 Jun 2020'} 
    {DeskUID: "B211A15", Day: '3 Jun 2020'} 
    ]

result = [
    {DeskUID: "B201A10", Day: '1 Jun 2020'} 
    {DeskUID: "B201A10", Day: '2 Jun 2020'} 
    {DeskUID: "B211A15", Day: '3 Jun 2020'} 
    ]

expected result = [
    {DeskUID: "B201A15", Day: '1 Jun 2020'} 
    {DeskUID: "B201A15", Day: '2 Jun 2020'} 
    {DeskUID: "B201A15", Day: '3 Jun 2020'} 
    ]

你想要这样的吗

var dateRange=[2020年6月1日、2020年6月2日、2020年6月3日、2020年6月4日、2020年6月5日];
var提供=[{DeskUID:“B200B3”,日期:'2020年6月1日',{DeskUID:'B200B3',日期:'2020年6月3日',{DeskUID:'B200B3',日期:'2020年6月4日',{DeskUID:'B200B3',日期:'2020年6月5日',{DeskUID:'B211B5',日期:'2020年6月3日',{DeskUID:'B211B5',日期:'2020年6月4日';
var result=dateRange.map(函数(日期){
返回报价。查找(功能(报价){
返回新日期(offer.Day).getTime()==新日期(Date).getTime();
})
});
控制台日志(结果)使用Set()跟踪找到的日期匹配项,并返回包含所有匹配项的DeskUID日期。您还没有明确表示是否只希望在报价仅包含这些日期或只需要包含这些日期的情况下进行匹配

您没有说明如何处理复制,所以如果您希望包含非匹配项,我只将它们包括在内,如果您只希望包含匹配项,则将其排除在外

dateRangeArray=['2020年6月1日'、'2020年6月2日'、'2020年6月3日']
报价=[{
DeskUID:“B201A10”,
日期:2020年5月30日
},{
DeskUID:“B201A10”,
日期:2020年6月1日
}, {
DeskUID:“B201A10”,
日期:2020年6月2日
}, {
DeskUID:“B211A15”,
日期:2020年6月1日
}, {
DeskUID:“B211A15”,
日期:2020年6月2日
}, {
DeskUID:“B211A15”,
日期:2020年6月3日
}, {
DeskUID:“B211A15”,
日期:2020年6月4日
}, {
DeskUID:“B211A15”,
日期:2020年6月3日
}]
//包括非比赛日,但比赛日包含全天
var dateRange=new Set()
//Set()构造函数在IE11下有缺陷
dateRangeArray.forEach(函数(x){dateRange.add(x)})
var result=[],acc={};
对于(变量i=0;ilog(“仅包括匹配天数,无重复:+JSON.stringify(结果))它没有意义,基于你的输入数组,它应该是一个数组。不是一个对象,结果应该与input@eugensunicdateRange是一个数组就是这样!非常感谢。但您的代码无法读取我的日期值。它们不是弦。请你调整一下代码好吗?我在另一个函数中有类似的东西,但我不知道如何在这个函数中实现它函数sameDay(d1,d2){return(d1.getFullYear()==d2.getFullYear()&&d1.getMonth()==d2.getMonth()&&d1.getDate()==d2.getDate();}``@米兰,我已经编辑了我的答案,看一看。你不必做额外的事情,只需获取日期的
getTime
,并进行匹配即可。谢谢,我现在得到了一些结果,但它们不正确。我编辑了我的问题,请阅读编辑。我真的很感激。谢谢你,Gorak,这可以做到,但是你的功能忽略了更多的下一个新的提议。如果我使用另一个DeskUID并使用与dateRange数组中相同的日期范围向offers数组中添加新的offer,则结果中只会得到一个DeskUID,预期为两个DeskUID,或三个DeskUID,等等。是的,我定义得还不够……感谢您的反馈。我试图实现您的代码,但在控制台中出现以下错误:TypeError:Object.values(…)。find(…)是未定义的,因为它使用了一些在IE11中不起作用的功能。我很感激你的帮助,不幸的是,你的两个函数都给了我一个空数组。你在上面的答案中运行了我的例子吗?它不应该返回空数组。请显示您正在使用的导致空数组的输入Set()构造函数的错误已修复