如何使用 getJSON 中存在的键值创建 JSON 文件的子集?

How do I create a subset of a JSON file using key values that exist in both using getJSON?

我有一个很大的 JSON 文件,我想用它创建一个使用 vars 的子集,我将把它存储在 localStorage 中。我更喜欢 jQuery 但也欢迎其他方法。

id(将存在于两个地方)将用于匹配并确定 keys/values 应该是新子集的一部分。

"master" JSON 文件的结构类似于:

{
    "myStuff": [


        {
            "id": "53b0c01de4b0deedb5c9015f",
            "brief": "Joe's Stuff",
            "author": "Joe"
        },


        {
            "id": "545fb8c4e4b03cfb303de9f2",
            "brief": "Jim's Stuff",
            "author": "Jim"
        },

        {
            "id": "54676ae4e4b09ffed41ffc7c",
            "brief": "Mary's Stuff",
            "author": "Mary"
        }

    ]
}

我可以灵活地决定将如何确定子集的项目 presented.It 将始终包含多个值。这些是 "id" 值以匹配主 JSON 文件中现有的 "id" 值。

例如,我可以从 localStorage 中获取如下所示的字符串:

{"id1":"545fb8c4e4b03cfb303de9f2","id2":"54676ae4e4b09ffed41ffc7c"}

或者像这样简单:

 545fb8c4e4b03cfb303de9f2, 54676ae4e4b09ffed41ffc7c

欢迎就哪种方法可能更好提出建议。

因此,在这种情况下,子集应该 return 只是 Jim 和 Mary 的东西,而忽略 Joe。

{
    "myStuffSubset": [


        {
            "id": "545fb8c4e4b03cfb303de9f2",
            "brief": "Jim's Stuff",
            "author": "Jim"
        },

        {
            "id": "54676ae4e4b09ffed41ffc7c",
            "brief": "Mary's Stuff",
            "author": "Mary"
        }

    ]
}

如果我在解释中遗漏了什么,请告诉我。而且,我发现小提琴可以帮助我最好地学习。谢谢!

我已经为你创建了一个plnkr

基本上,过滤器函数将获取以逗号分隔的字符串并在您的 JSON:

中搜索
function search(str, obj) {
  var arr = str.split(',');
  return obj.myStuff.filter(function(o) {
      return arr.indexOf(o.id) > -1;
  });
}