我有一个大型的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"
}
]
}
如果我在解释中遗漏了某些内容,请告诉我。并且,我发现小提琴帮助我学到最好的东西。谢谢!
答案 0 :(得分:1)
我为你创建了plnkr。
基本上,过滤器函数将使用逗号分隔字符串并在JSON中搜索:
function search(str, obj) {
var arr = str.split(',');
return obj.myStuff.filter(function(o) {
return arr.indexOf(o.id) > -1;
});
}