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

时间:2015-09-15 21:12:52

标签: javascript jquery json ajax getjson

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

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

“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"
        }

    ]
}

我可以灵活地确定将确定子集的项目。它将始终包含多个值。这些是“id”值,以匹配主JSON文件中的现有“id”值。

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

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

或简单如下:

 545fb8c4e4b03cfb303de9f2, 54676ae4e4b09ffed41ffc7c

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

所以,在这种情况下,子集应该只返回Jim和Mary的内容并忽略Joe。

{
    "myStuffSubset": [


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

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

    ]
}

如果我在解释中遗漏了某些内容,请告诉我。并且,我发现小提琴帮助我学到最好的东西。谢谢!

1 个答案:

答案 0 :(得分:1)

我为你创建了plnkr

基本上,过滤器函数将使用逗号分隔字符串并在JSON中搜索:

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