根据值在json对象中搜索关键字

时间:2016-12-04 16:00:40

标签: javascript jquery json

我根据从php脚本中获取的json数据填充选择输入字段的选项。

这很好用,但我想根据所选的选项显示一些额外的信息。 基本上,我正在寻找一种方法来找到所选选项的关键:

 $("#code").html(result[whichkey]["uniquecode"]);

This fiddle希望让我的问题更加清晰。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

鉴于option元素是以对象的uniquecode作为其值创建的,为什么你甚至需要再次访问该对象?您只需检索所选value的某个option属性?

假设这只是因为你过分简化了你的例子,并且数组中的对象确实包含了option元素本身没有的其他有用数据,那么你可以使用$.grep来按选定的uniquecode过滤对象数组,如下所示:

var json = '[{"uniquecode":"b32dez2","name":"John Doe","foo":"bar"},{"uniquecode":"a2df32","name":"Adam Smith","foo":"buzz"}]';
var result = JSON.parse(json);
var $sel = $('#names').change(function() {
  var value = this.value;
  var obj = $.grep(result, function(e) {
    return e.uniquecode == value;
  });
  $("#code").html(obj[0].uniquecode + ' / ' + obj[0].foo)
});;

result.forEach(function(obj) {
  $('<option value="' + obj.uniquecode + '">' + obj.name + '</option>').appendTo($sel)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="names"></select>
<div id="code"></div>

请注意,我向对象添加了foo属性,以向您展示如何访问直接放在option元素上的对象的属性。

另请注意,我也简化了生成option元素的代码。如果您要在项目中使用jQuery一次,那么您也可以在任何地方使用它。