[英]Filter based on a nested value JavaScript / React
我有一個包含來自 Google Places API 數據的對象數組。
對象具有嵌套數組/對象,我想根據嵌套數組中的值過濾我的數據。
data = [
{
place : "First",
address: [
{
"types": [
"locality",
"political"
],
"long_name": "Galway",
"short_name": "Galway"
},
{
**** I want to filter data from here **********
"types": [
"administrative_area_level_1",
"political"
],
"long_name": "County Galway",
"short_name": "G"
**** I want to filter data from here **********
},
]
},
{
place : "Second",
address: [
{
"types": [
"locality",
"political"
],
"long_name": "Dublin",
"short_name": "Dublin"
},
{
"types": [
"administrative_area_level_1",
"political"
],
"long_name": "County Dublin",
"short_name": "D"
},
我想根據選擇標記的值過濾此數據。 但是我想使用類型數組包含“administrative_area_level_1”的值
IE。 “戈爾韋郡”
例如。 如果 select value = "Galway" 返回第一個對象。 等等等等
這是返回我想要的輸出,但我不知道如何將它與過濾器功能結合起來。
data.map((item) => {
item.address.map((item2) => {
if (item2.types.includes("administrative_area_level_1")) {
console.log(item2.long_name.split(" ")[1])
}
})
})
// Logs County Galway but after split, Galway
// If this value = <select>...filter
所以如果你想過濾一些數組對象,從過濾功能開始
let filtered = data.filter( place => return true/false);
讓我們為“地點”編寫過濾器方法。 您首先想要的是在地址中找到management_area_level_1。
let administratives = place.address.find( c => c.types.include('administrative_area_level_1') );
讓我們假設它可以是任何大小,甚至是空的...您現在想要檢查至少一個具有 'galway' 值。 所以如果成為
boolean isGalway = administratives.some( a => a.long_name === 'Galway' );
把所有東西放在一起
const results = data.filter( place => {
let administratives = place.address.find( c => c.types.include('administrative_area_level_1') );
boolean isGalway = administratives.some( a => a.long_name === 'Galway' );
return isGalway;
});
如果你願意,可以簡短
const results = data.filter( place => place.address.find( c => c.types.include('administrative_area_level_1') ).some( a = a.long_name === 'Galway' ) );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.