首页 > 解决方案 > JSON文件中的搜索和返回算法

问题描述

我有一个非常具体的 JSON 文件,这种格式处理起来很烦人,但别无选择。这真的让我无法完成这么简单的任务:

    const data = 
        {    
        "country":
            {
                "France" : 
                {
                    "owners" : ["peter", "john"],
                    "members" : [ "james", "paul"]
                },
                "Germany" :
                {
                    "owners" : ["Tom", "Omar"],
                    "members" : ["Zak", "Eddie", "Ronald"]
                },
                "Spain" : 
                {
                    "owners" : ["Juan"],
                    "members" : ["Clement", "Max"]
                }
            }
       }

我想要的只是一个让我知道特定用户所在国家/地区的功能(不管他是在成员还是所有者中)。例如 :

GetUserCountry(data, 'Ronald'); // Should return 'Germany'

我知道这很简单,但文件的格式不会让我做我的事。

标签: javascriptjsontypescript

解决方案


一种方法是使用Object.entries()Array.find()

const data = {
  "country": {
    "France": {
      "owners": ["peter", "john"],
      "members": ["james", "paul"]
    },
    "Germany": {
      "owners": ["Tom", "Omar"],
      "members": ["Zak", "Eddie", "Ronald"]
    },
    "Spain": {
      "owners": ["Juan"],
      "members": ["Clement", "Max"]
    }
  }
};

function getUserCountry(data, name) {
  return Object.entries(data.country).find(([key, value]) =>
    (value.owners.includes(name) || value.members.includes(name)))[0];
}

console.log(getUserCountry(data, 'Ronald'));
console.log(getUserCountry(data, 'john'));
console.log(getUserCountry(data, 'Max'));


推荐阅读