Javascript 基于另一个数组数组筛选对象数组
我有一个像这样存储纬度和经度的对象数组,并过滤包含纬度和经度的数组。我想根据纬度和经度过滤数据Javascript 基于另一个数组数组筛选对象数组,javascript,arrays,filter,Javascript,Arrays,Filter,我有一个像这样存储纬度和经度的对象数组,并过滤包含纬度和经度的数组。我想根据纬度和经度过滤数据 var data = [{LatLng:[34.09755005, -118.2900766],all_time: 22, wait_list: 217} {LatLng:[21.30799045, -157.853676],all_time: 23, wait_list: 210}, {LatLng:[36.0678305, -110.2900766],all_time: 19, wait_list
var data = [{LatLng:[34.09755005, -118.2900766],all_time: 22, wait_list: 217}
{LatLng:[21.30799045, -157.853676],all_time: 23, wait_list: 210},
{LatLng:[36.0678305, -110.2900766],all_time: 19, wait_list: 237},
{LatLng:[26.0665546, -130.8946739],all_time: 15, wait_list: 307}
]
我有另一个数组,我用它作为过滤器
var nearest_array = [[21.30799045, -157.853676],[26.0665546, -130.8946739]]
结果数组应如下所示-
var result_array = [{LatLng:[26.0665546, -130.8946739],all_time: 15, wait_list: 307},{LatLng:[21.30799045, -157.853676],all_time: 23, wait_list: 210}]
我尝试了一些东西,但似乎什么都不起作用-
data.filter(x => x.LatLng.some(g => nearest_array.includes(g)))
data.filter(x => nearest_array.includes(x.LatLng))
您可以从最近的_数组中进行.map,并找到关联的LatLng项-,而不是筛选。如果您的输入数组和输出数组是一对一的,则map更合适:
var数据={LatLng:[34.09755005,-118.2900766],所有时间:22,等待列表:217},{LatLng:[21.3079045,-157.853676],所有时间:23,等待列表:210},{LatLng:[36.0678305,-110.2900766],所有时间:19,等待列表:237},{LatLng:[26.0665546,-130.8946739],所有时间:15,等待列表:307};最近的变量数组=[[21.3079045,-157.853676],[26.0665546,-130.8946739]]
常量输出=最近的_array.mapnumsToFind=>{
const joined=numsToFind.join',';
返回data.find{LatLng}=>LatLng.join','==join;
};
console.logoutput 您可以从最近的_数组中进行.map,并找到关联的LatLng项-,而不是筛选。如果您的输入数组和输出数组是一对一的,则map更合适:
var数据={LatLng:[34.09755005,-118.2900766],所有时间:22,等待列表:217},{LatLng:[21.3079045,-157.853676],所有时间:23,等待列表:210},{LatLng:[36.0678305,-110.2900766],所有时间:19,等待列表:237},{LatLng:[26.0665546,-130.8946739],所有时间:15,等待列表:307};最近的变量数组=[[21.3079045,-157.853676],[26.0665546,-130.8946739]]
常量输出=最近的_array.mapnumsToFind=>{
const joined=numsToFind.join',';
返回data.find{LatLng}=>LatLng.join','==join;
};
console.logoutput 您可以使用和执行以下操作:
const data=[{LatLng:[34.09755005,-118.2900766],所有时间:22,等待列表:217},{LatLng:[21.3079045,-157.853676],所有时间:23,等待列表:210},{LatLng:[36.0678305,-110.2900766],所有时间:19,等待列表:237},{LatLng:[26.0665546,-130.8946739],所有时间:15,等待列表:307}]
常量过滤器=[[21.30799045,-157.853676],[26.0665546,-130.8946739]]
const result=data.filter{LatLng}=>
filters.somef=>LatLng.everyl=>f.includesl
console.logresult您可以使用,和:
const data=[{LatLng:[34.09755005,-118.2900766],所有时间:22,等待列表:217},{LatLng:[21.3079045,-157.853676],所有时间:23,等待列表:210},{LatLng:[36.0678305,-110.2900766],所有时间:19,等待列表:237},{LatLng:[26.0665546,-130.8946739],所有时间:15,等待列表:307}]
常量过滤器=[[21.30799045,-157.853676],[26.0665546,-130.8946739]]
const result=data.filter{LatLng}=>
filters.somef=>LatLng.everyl=>f.includesl
console.logresult您可以使用函数过滤器,并使用函数some检查纬度和经度,这用于检查至少一个包含这些坐标的对象
var数据=[{LatLng:[34.09755005,-118.2900766],所有时间:22,等待列表:217},{LatLng:[21.3079045,-157.853676],所有时间:23,等待列表:210},{LatLng:[36.0678305,-110.2900766],所有时间:19,等待列表:237},{LatLng:[26.0665546,-130.8946739],所有时间:15,等待列表:307},
最近的_数组=[[21.3079045,-157.853676],[26.0665546,-130.8946739],
结果=数据。过滤器{LatLng:[lat,lon]}=>最近的_数组。一些[ilat,ilon]=>lat===ilat&&lon==ilon;
console.logresult;
.as console wrapper{max height:100%!important;top:0;}您可以使用函数filter并使用函数some检查纬度和经度,这用于检查至少一个包含这些坐标的对象
var数据=[{LatLng:[34.09755005,-118.2900766],所有时间:22,等待列表:217},{LatLng:[21.3079045,-157.853676],所有时间:23,等待列表:210},{LatLng:[36.0678305,-110.2900766],所有时间:19,等待列表:237},{LatLng:[26.0665546,-130.8946739],所有时间:15,等待列表:307},
最近的_数组=[[21.3079045,-157.853676],[26.0665546,-130.8946739],
结果=数据。过滤器{LatLng:[lat,lon]}=>最近的_数组。一些[ilat,ilon]=>lat===ilat&&lon==ilon;
console.logresult;
。作为控制台包装器{max height:100%!important;top:0;}输出数组是否需要与最近的_数组相反?输出数组是否需要与最近的_数组相反?非常感谢您的解释。我真的不明白为什么即使在我试图将原始值等同起来的时候它也不起作用。你的解决方案很有效,非常感谢你的解释。我真的不明白为什么即使在我试图将原始值等同起来的时候它也不起作用。你的解决方案奏效了