当前位置:  开发笔记 > 编程语言 > 正文

如何针对唯一键名称/值对"过滤"JSON?

如何解决《如何针对唯一键名称/值对"过滤"JSON?》经验,为你挑选了1个好方法。

我有一些JSON数据给我一个语言列表,其中包含lat/lng等信息.它还包含我用于图标的组值 - 我想用它构建一个图例.JSON看起来像这样:

{"markers":[
  {"language":"Hungarian","group":"a", "value":"yes"},
  {"language":"English", "group":"a", "value":"yes"},
  {"language":"Ewe", "group":"b", "value":"no"},
  {"language":"French", "group":"c", "value":"NA"}
]}

我想"过滤"它最终像这样:

{"markers":[
 {"group":"a", "value":"yes"},
 {"group":"b", "value":"no"},
 {"group":"c", "value":"NA"}
]}

现在我已经有了这个,使用jQuery来创建我的传奇......但是当然它正在吸引所有的价值观:

$.getJSON("http://127.0.0.1:8000/dbMap/map.json", function(json){
    $.each(json.markers, function(i, language){
        $('

').html('' + language.value).appendTo('#legend-contents'); }); });

对于给定的对,我怎样才能获取整个JSON对象中的唯一名称/值对?



1> bendewey..:

我将标记数组转换为键值对,然后循环该对象属性.

var markers = [{"language":"Hungarian","group":"a", "value":"yes"}, 
  {"language":"English", "group":"a", "value":"yes"}, 
  {"language":"Ewe", "group":"b", "value":"no"},
  {"language":"French", "group":"c", "value":"NA"}];

var uniqueGroups = {};
$.each(markers, function() {
  uniqueGroups[this.group] = this.value;
});

然后

$.each(uniqueGroups, function(g) {
  $('

').html('' + this).appendTo('#legend-contents'); });

要么

for(var g in uniqueGroups)
{
  $('

').html('' + uniqueGroups[g]).appendTo('#legend-contents'); }

此代码示例使用循环中的最后一个值覆盖唯一值.如果您想使用第一个值,则必须执行一些条件检查以查看密钥是否存在.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有