在javascript中搜索和更新嵌套对象
我有一个嵌套对象,在搜索特定键时,我想更新原始对象在javascript中搜索和更新嵌套对象,javascript,Javascript,我有一个嵌套对象,在搜索特定键时,我想更新原始对象 var people= { "i": [ { "country": "Australia", "list": [ { "name": "ABC ", "address": "AB street ", } ... ]
var people= {
"i": [
{
"country": "Australia",
"list": [
{
"name": "ABC ",
"address": "AB street ",
}
...
]
},
{
"country": "Brazil",
"list": [
{
"name": "XZ ",
"address": "AB street "
},
...
]
}
]
...
};
我想按名称搜索,而不是创建新的对象筛选器页面,请尝试(复制然后)使用delete/unshift操作符修改原始页面。这样想会更容易,而且您将保留原始结构。您需要使用函数
find
查找现有对象
var pages={“1”:[{“title”:“Australia”,“list”:[{“name”:“ABC”,“label”:“08RAH-S650”,“description”:“S650 Combine HX”},{“name”:“ABC”,“label”:“00CAH-S660”,“description”:“S660 Combine HX”},{“title”:“巴西”,“列表”:[{“名称”:“XZ”,“标签”:“08RAH-S650”,“说明”:“S650联合收割机HX”},{“名称”:“W”,“标签”:“00CAH-S660”,“说明”:“S660联合收割机HX”}],“2”:[{“标题”:“澳大利亚”,“列表”:[{“名称”:“ABC”,“标签”:“01KBZ-S670”,“说明”:“S670小型谷物种植联合收割机ZX”},{“名称”:“DE”,“标签”:“00CAH-S660”,“说明”:“S660联合收割机HX”},{“标题”:“英国”,“列表”:[{“名称”:“ABC”,“标签”“:”01KBZ-S670“,”说明“:”S670小型谷物小麦联合收割机ZX“},{”名称“:”ABC“,”标签“:”00CAH-S660“,”说明“:”S660联合收割机HX“}],”,”3“:[{”标题“:”美国“,”列表“:[{”名称“:”ABC“,”标签“:“01KBZ-S670”,“说明”:“S670小型谷物联合收割机ZX”},{“名称”:“DF”,“标签”:“01LAZ-S680”,“说明”:“S680小型谷物联合收割机ZX”},{“标题”:“澳大利亚”,“列表”:[{“名称”:“ABC”,“标签”:“01KBZ-S670”“,”说明“:”S670小型谷物联合收割机ZX“},{”名称“:”ABC“,”标签“:”01LAZ-S680“,”说明“:”S680小型谷物联合收割机ZX“},{”名称“:”ABC“,”标签“:”01NBZ-S680“,”说明“:”S680小型谷物联合收割机ZX“,”™ 组合ZX“}]}]};
var searchedText=“AB”;
var filteredpage={};
var allPages=getFilteredPages(页面,搜索文本);
函数getFilteredPages(页面,searchedText){
Object.keys(pages).map(函数(页码){
pages[pageNumber].map(函数(pageItem,索引){
pageItem.list.map(函数(项){
if(item.name.toLowerCase().indexOf(searchedText.toLowerCase())!=-1){
if(筛选页面[页码]){
var p=filteredPages[pageNumber]。查找((p)=>p.title==pageItem.title);
如果(p){
p、 列表。推送(项目);
}否则{
filteredPages[pageNumber]。推送({
标题:pageItem.title,
清单:[项目]
});
}
}否则{
filteredPages[页码]=[{
标题:pageItem.title,
清单:[项目]
}];
}
}
});
});
});
返回过滤页;
}
console.log('allPages>>>>>,allPages)代码>
。作为控制台包装器{
最大高度:100%!重要;
排名:0;
}
为什么您的输入不是一个真正的数组?它是一个嵌套对象,包含objects1数组。页面映射应该是一个对象数组,以便于使用。2.尝试使用函数而不是映射。