javascript - 匹配来自两个单独 JSON feed 的值

标签 javascript jquery json ajax

我正在开发一个由多个 JSON feed 驱动的 AJAX 项目。我使用一个提要创建一个类别列表,该列表过滤来自第二个提要的文章。

我的第一个提要如下所示:

"value": [
    {
        "Id": "1ca44b5b-06ab-63fa-8375-ff00000b3273",
        "Title": "Safety",
    }, ...
]

我的第二个提要如下所示:

value": [
    {
        "Id": "30b94b5b-06ab-63fa-8375-ff00000b3273",
        "Title": "Test article",
        "Body": "Test content",
        "topics": [
            "1ca44b5b-06ab-63fa-8375-ff00000b3273"
        ],
    }, ...
]

第一个提要是主题列表,第二个提要是由这些主题标记的一组文章。我能够很好地匹配 GUID 进行过滤,但问题是,由于第二个提要的限制,我无法将标题“安全”拉入文章中。我需要这个标题有多种原因,主要是样式设计和将标题推送到页面 URL。

我正在努力寻找解决这个问题的最佳方法,以使其充满活力。基本上,我希望根据第一个提要找到将 GUID 与第二个提要中的标题相关联的最佳方法。

以下是我提取两个提要的方法:

提要 1:

$('.category-filters').each(function(){
    var $this = $(this);

    $.ajax({
        method:"GET",
        url: '/api/stories/flat-taxa?$filter=TaxonomyId%20eq%20dca84b5b-06ab-63fa-8375-ff00000b3273',
        data: { format:'json'},
        context:$this
    }).success(function(data){

        var category = data.value;
        var filter = [];

        for (i = 0; i < category.length; i++) { 
            $this.append('<li><input type="checkbox" id="' + category[i].Id + '"><label for="' + category[i].Id + '">' + category[i].Title + '</label></li>');
        } 
    });
});

提要 2:

function storyCards(){

    $.ajax({ 
        method:"GET",
        url: url,
        data: { format:'json' },
        context:$('.story-cards')
    }).success(function(data){ 
        var story = data.value;

        for (i = 0; i < story.length; i++) { 
            $('.story-cards').append('<li class="item card-item"><div class="card"><div class="content"><h2>' + story[i].Title + '</h2>' + story[i].Summary + '</div><div class="card-footer"><a class="button" href="' + story[i].UrlName + '">' + story[i].ButtonText + '</a></div></div></li>');
        }
    }); 
}

希望这是有道理的,很乐意根据要求提供更多详细信息。

最佳答案

似乎是共享字典的好地方,您可以在其中将 GUID 与标题相匹配。

//dynamically set the titles
var guid2title = {}
//titles is the array of titles/GUID in your post
for (var i = 0; i < titles.length; i++){
   guid2title[titles[i]["Id"]] = titles[i]["Title"];
}

//items is the json array of articles in your post
for (var i = 0; i < items.length; i++){
    items[i].titles = []; //used later to save to the object
    for (var j = 0; j < items[i].topics.length; j++){
       var GUID = items[i].topics[j];
       var title = guid2title[GUID];

       //attach it to your item for later use
       items[i].titles.push(title);

    }

}     

关于javascript - 匹配来自两个单独 JSON feed 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39361509/

相关文章:

javascript - 有没有更快的方法来清空 HTML 选择框?

javascript - 从子组件中处于状态的数组中删除项目

python - 如何以 json 格式将 pandas 数据帧 to_json() 写入 s3

php - 在php中格式化ajax json数据

javascript - 文本字段输入颜色CSS

javascript - 从 map 中移除 carto 层

javascript - 无法从 LocalStorage 获取下拉列表的值

javascript - 克隆右键单击的 div 元素

json - 括号: Custom Theme

javascript - 没有为链接的 github url 下载 package-lock.json