javascript - 在 javascript 中搜索和更新嵌套对象

标签 javascript

我有一个嵌套对象,在搜索特定键时,我想更新原始对象。

var people= {
      "i": [
        {
          "country": "Australia",
          "list": [
            {
              "name": "ABC   ",
              "address": "AB street ",
            }
            ...
          ]
        },
        {
          "country": "Brazil",
          "list": [
            {
              "name": "XZ   ",
              "address": "AB street "
            },
           ...
          ]
        }
      ]
     ...
    };

我想按名称搜索

最佳答案

您需要使用函数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":"Brazil",      "list":[        {          "name":"XZ   ",          "label":"08RAH - S650 ",          "description":"S650 Combine HX"        },        {          "name":"W  ",          "label":"00CAH - S660 ",          "description":"S660 Combine HX"        }      ]    }  ],  "2":[    {      "title":"Australia",      "list":[        {          "name":"ABC   ",          "label":"01KBZ - S670 ",          "description":"S670 Small Grain HillMaster Combine ZX"        },        {          "name":"DE   ",          "label":"00CAH - S660 ",          "description":"S660 Combine HX"        }      ]    },    {      "title":"United Kingdom",      "list":[        {          "name":"ABC   ",          "label":"01KBZ - S670 ",          "description":"S670 Small Grain HillMaster Combine ZX"        },        {          "name":"ABC   ",          "label":"00CAH - S660 ",          "description":"S660 Combine HX"        }      ]    },  ],  "3":[    {      "title":"United States",      "list":[        {          "name":"ABC   ",          "label":"01KBZ - S670 ",          "description":"S670 Small Grain HillMaster Combine ZX"        },        {          "name":"DF   ",          "label":"01LAZ - S680 ",          "description":"S680 Small Grain Combine ZX"        }      ]    },    {      "title":"Australia",      "list":[        {          "name":"ABC   ",          "label":"01KBZ - S670 ",          "description":"S670 Small Grain HillMaster Combine ZX"        },        {          "name":"ABC  ",          "label":"01LAZ - S680 ",          "description":"S680 Small Grain Combine ZX"        },        {          "name":"ABC   ",          "label":"01NBZ - S680 ",          "description":"S680 HillMaster™ Combine ZX"        }      ]    }  ]};

var searchedText = "AB";
var filteredPages = {};

var allPages = getFilteredPages(pages, searchedText);

function getFilteredPages(pages, searchedText) {

  Object.keys(pages).map(function(pageNumber) {
    pages[pageNumber].map(function(pageItem, index) {
      pageItem.list.map(function(item) {
        if (item.name.toLowerCase().indexOf(searchedText.toLowerCase()) !== -1) {
          if (filteredPages[pageNumber]) {
            var p = filteredPages[pageNumber].find((p) => p.title === pageItem.title);
            
            if (p) {
              p.list.push(item);
            } else {
              filteredPages[pageNumber].push({
                title: pageItem.title,
                list: [item]
              });
            }
          } else  {
            filteredPages[pageNumber] = [{
              title: pageItem.title,
              list: [item]
            }];
          }
        }
      });
    });

  });
  return filteredPages;

}


console.log('allPages >>>>>', allPages);
.as-console-wrapper {
  max-height: 100% !important;
  top: 0;
}

关于javascript - 在 javascript 中搜索和更新嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48892155/

相关文章:

javascript - 当我在 angular2 中将表格样式设置为 pdf 时,如何打印 html 格式?

javascript - Firebase Auth photoURL 始终返回 null

javascript - 在 ECMAScript 上使用 JSDoc 和扩展语法

javascript - 使用 express 和 node.js 更新 mongodb 中的单个记录

javascript - 您可以在使用 minify 库缩小的 .js 文件中使用 PHP 吗?

javascript - 类型错误 : modules[moduleId] is undefined

Javascript 或查询 - 将关联数组转换为对象

javascript - 如何在javascript中进行元素提取?

javascript 覆盖 css 显示 : none visible hidden

javascript - 如何使用我的位置通过纬度和经度计算两点之间的距离