根据嵌套对象过滤嵌套对象数组
Filter array of nested objects based on nested object
我想根据嵌套对象中的值过滤数组。
我的代码如下所示,用于查找包含 "inventory_type" 或 "Credit" 的产品,但我收到一条错误消息,提示某些产品不是函数,需要一些有关最佳搜索方法的指导这么深的数组
let object = [{
"summary": [{
"count": 2,
"inventory_region": "England & Wales",
"inventory_type": "Add-on"
}, {
"count": 2,
"inventory_region": "England & Wales",
"inventory_type": "Credit"
}, {
"count": 2,
"inventory_region": "England & Wales",
"inventory_type": "Social-boost"
}, {
"count": 2,
"inventory_region": "Scotland",
"inventory_type": "Add-on"
}, {
"count": 2,
"inventory_region": "Scotland",
"inventory_type": "Credit"
}],
"products": [{
"count": 2,
"display_label_short": "14 Day Add On E&W",
"inventory_region": "England & Wales",
"display_label": "14 Day Add On E&W",
"inventory_type": "Add-on"
}, {
"count": 2,
"display_label_short": "Standard 28 Day Listing E&W",
"inventory_region": "England & Wales",
"display_label": "Standard 28 Day Listing E&W",
"inventory_type": "Credit"
}, {
"count": 2,
"display_label_short": "14 Day Boost E&W",
"inventory_region": "England & Wales",
"display_label": "14 Day Boost E&W",
"inventory_type": "Social-boost"
}, {
"count": 2,
"display_label_short": "14 Day Add On SCO",
"inventory_region": "Scotland",
"display_label": "14 Day Add On SCO",
"inventory_type": "Add-on"
}, {
"count": 2,
"display_label_short": "Standard 28 Day Listing SCO",
"inventory_region": "Scotland",
"display_label": "Standard 28 Day Listing SCO",
"inventory_type": "Credit"
}],
"company_id": 2876909,
"company_name": "Automated Testing"
}]
let newArr = object.map(objects => {
return objects.products.filter(products => {
products.some(product => product.inventory_type === 'Credit')
})
})
console.log(newArr)
您的过滤似乎过于深入了:
let object = [{
"summary": [{
"count": 2,
"inventory_region": "England & Wales",
"inventory_type": "Add-on"
}, {
"count": 2,
"inventory_region": "England & Wales",
"inventory_type": "Credit"
}, {
"count": 2,
"inventory_region": "England & Wales",
"inventory_type": "Social-boost"
}, {
"count": 2,
"inventory_region": "Scotland",
"inventory_type": "Add-on"
}, {
"count": 2,
"inventory_region": "Scotland",
"inventory_type": "Credit"
}],
"products": [{
"count": 2,
"display_label_short": "14 Day Add On E&W",
"inventory_region": "England & Wales",
"display_label": "14 Day Add On E&W",
"inventory_type": "Add-on"
}, {
"count": 2,
"display_label_short": "Standard 28 Day Listing E&W",
"inventory_region": "England & Wales",
"display_label": "Standard 28 Day Listing E&W",
"inventory_type": "Credit"
}, {
"count": 2,
"display_label_short": "14 Day Boost E&W",
"inventory_region": "England & Wales",
"display_label": "14 Day Boost E&W",
"inventory_type": "Social-boost"
}, {
"count": 2,
"display_label_short": "14 Day Add On SCO",
"inventory_region": "Scotland",
"display_label": "14 Day Add On SCO",
"inventory_type": "Add-on"
}, {
"count": 2,
"display_label_short": "Standard 28 Day Listing SCO",
"inventory_region": "Scotland",
"display_label": "Standard 28 Day Listing SCO",
"inventory_type": "Credit"
}],
"company_id": 2876909,
"company_name": "Automated Testing"
}]
let newArr = object.map(objects => {
return objects.products.filter(product => (product.inventory_type === 'Credit'))
})
console.log(newArr)
您的"inner products"不是数组,只是一个产品
let object = [{ "summary": [{ "count": 2, "inventory_region": "England & Wales", "inventory_type": "Add-on" }, { "count": 2, "inventory_region": "England & Wales", "inventory_type": "Credit" }, { "count": 2, "inventory_region": "England & Wales", "inventory_type": "Social-boost" }, { "count": 2, "inventory_region": "Scotland", "inventory_type": "Add-on" }, { "count": 2, "inventory_region": "Scotland", "inventory_type": "Credit" }], "products": [{ "count": 2, "display_label_short": "14 Day Add On E&W", "inventory_region": "England & Wales", "display_label": "14 Day Add On E&W", "inventory_type": "Add-on" }, { "count": 2, "display_label_short": "Standard 28 Day Listing E&W", "inventory_region": "England & Wales", "display_label": "Standard 28 Day Listing E&W", "inventory_type": "Credit" }, { "count": 2, "display_label_short": "14 Day Boost E&W", "inventory_region": "England & Wales", "display_label": "14 Day Boost E&W", "inventory_type": "Social-boost" }, { "count": 2, "display_label_short": "14 Day Add On SCO", "inventory_region": "Scotland", "display_label": "14 Day Add On SCO", "inventory_type": "Add-on" }, { "count": 2, "display_label_short": "Standard 28 Day Listing SCO", "inventory_region": "Scotland", "display_label": "Standard 28 Day Listing SCO", "inventory_type": "Credit" }], "company_id": 2876909, "company_name": "Automated Testing" }]
let newArr = object.map(objects => objects.products.filter(product =>
product.inventory_type === 'Credit'
))
console.log(newArr)
我想根据嵌套对象中的值过滤数组。
我的代码如下所示,用于查找包含 "inventory_type" 或 "Credit" 的产品,但我收到一条错误消息,提示某些产品不是函数,需要一些有关最佳搜索方法的指导这么深的数组
let object = [{
"summary": [{
"count": 2,
"inventory_region": "England & Wales",
"inventory_type": "Add-on"
}, {
"count": 2,
"inventory_region": "England & Wales",
"inventory_type": "Credit"
}, {
"count": 2,
"inventory_region": "England & Wales",
"inventory_type": "Social-boost"
}, {
"count": 2,
"inventory_region": "Scotland",
"inventory_type": "Add-on"
}, {
"count": 2,
"inventory_region": "Scotland",
"inventory_type": "Credit"
}],
"products": [{
"count": 2,
"display_label_short": "14 Day Add On E&W",
"inventory_region": "England & Wales",
"display_label": "14 Day Add On E&W",
"inventory_type": "Add-on"
}, {
"count": 2,
"display_label_short": "Standard 28 Day Listing E&W",
"inventory_region": "England & Wales",
"display_label": "Standard 28 Day Listing E&W",
"inventory_type": "Credit"
}, {
"count": 2,
"display_label_short": "14 Day Boost E&W",
"inventory_region": "England & Wales",
"display_label": "14 Day Boost E&W",
"inventory_type": "Social-boost"
}, {
"count": 2,
"display_label_short": "14 Day Add On SCO",
"inventory_region": "Scotland",
"display_label": "14 Day Add On SCO",
"inventory_type": "Add-on"
}, {
"count": 2,
"display_label_short": "Standard 28 Day Listing SCO",
"inventory_region": "Scotland",
"display_label": "Standard 28 Day Listing SCO",
"inventory_type": "Credit"
}],
"company_id": 2876909,
"company_name": "Automated Testing"
}]
let newArr = object.map(objects => {
return objects.products.filter(products => {
products.some(product => product.inventory_type === 'Credit')
})
})
console.log(newArr)
您的过滤似乎过于深入了:
let object = [{
"summary": [{
"count": 2,
"inventory_region": "England & Wales",
"inventory_type": "Add-on"
}, {
"count": 2,
"inventory_region": "England & Wales",
"inventory_type": "Credit"
}, {
"count": 2,
"inventory_region": "England & Wales",
"inventory_type": "Social-boost"
}, {
"count": 2,
"inventory_region": "Scotland",
"inventory_type": "Add-on"
}, {
"count": 2,
"inventory_region": "Scotland",
"inventory_type": "Credit"
}],
"products": [{
"count": 2,
"display_label_short": "14 Day Add On E&W",
"inventory_region": "England & Wales",
"display_label": "14 Day Add On E&W",
"inventory_type": "Add-on"
}, {
"count": 2,
"display_label_short": "Standard 28 Day Listing E&W",
"inventory_region": "England & Wales",
"display_label": "Standard 28 Day Listing E&W",
"inventory_type": "Credit"
}, {
"count": 2,
"display_label_short": "14 Day Boost E&W",
"inventory_region": "England & Wales",
"display_label": "14 Day Boost E&W",
"inventory_type": "Social-boost"
}, {
"count": 2,
"display_label_short": "14 Day Add On SCO",
"inventory_region": "Scotland",
"display_label": "14 Day Add On SCO",
"inventory_type": "Add-on"
}, {
"count": 2,
"display_label_short": "Standard 28 Day Listing SCO",
"inventory_region": "Scotland",
"display_label": "Standard 28 Day Listing SCO",
"inventory_type": "Credit"
}],
"company_id": 2876909,
"company_name": "Automated Testing"
}]
let newArr = object.map(objects => {
return objects.products.filter(product => (product.inventory_type === 'Credit'))
})
console.log(newArr)
您的"inner products"不是数组,只是一个产品
let object = [{ "summary": [{ "count": 2, "inventory_region": "England & Wales", "inventory_type": "Add-on" }, { "count": 2, "inventory_region": "England & Wales", "inventory_type": "Credit" }, { "count": 2, "inventory_region": "England & Wales", "inventory_type": "Social-boost" }, { "count": 2, "inventory_region": "Scotland", "inventory_type": "Add-on" }, { "count": 2, "inventory_region": "Scotland", "inventory_type": "Credit" }], "products": [{ "count": 2, "display_label_short": "14 Day Add On E&W", "inventory_region": "England & Wales", "display_label": "14 Day Add On E&W", "inventory_type": "Add-on" }, { "count": 2, "display_label_short": "Standard 28 Day Listing E&W", "inventory_region": "England & Wales", "display_label": "Standard 28 Day Listing E&W", "inventory_type": "Credit" }, { "count": 2, "display_label_short": "14 Day Boost E&W", "inventory_region": "England & Wales", "display_label": "14 Day Boost E&W", "inventory_type": "Social-boost" }, { "count": 2, "display_label_short": "14 Day Add On SCO", "inventory_region": "Scotland", "display_label": "14 Day Add On SCO", "inventory_type": "Add-on" }, { "count": 2, "display_label_short": "Standard 28 Day Listing SCO", "inventory_region": "Scotland", "display_label": "Standard 28 Day Listing SCO", "inventory_type": "Credit" }], "company_id": 2876909, "company_name": "Automated Testing" }]
let newArr = object.map(objects => objects.products.filter(product =>
product.inventory_type === 'Credit'
))
console.log(newArr)