Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 - Fatal编程技术网

在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.尝试使用函数而不是映射。