从json对象中检索对象

时间:2012-11-09 03:07:44

标签: javascript jquery json

我从我的数据库中获取一个JSON对象,如下所示:

products = [
    {"ID":1, "CODE":"code1", "DESCRIPTION":"abcd", "PRICE":100},
    {"ID":2, "CODE":"code2", "DESCRIPTION":"efgh", "PRICE":100},
    {"ID":3, "CODE":"code3", "DESCRIPTION":"ijkl", "PRICE":100}
];

然后我有一个select元素,其中包含text = CODE和value = ID的选项。 现在,当用户在下拉列表中选择产品时,我想填写一些带有所选产品的DESCRIPTION和PRICE的文本框。是否有任何内置函数可以执行以下操作:

var myObject = products("ID" = selectedValue)

我想用

myObject.DESCRIPTION, myObject.PRICE

填写我的文本框。谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用$.each效用函数:

$('select').change(function(){
   var id = this.value;
   $.each(products, function(i, myObject){
      if (myObject.ID === id) {
        $('textarea').val(myObject.DESCRIPTION);
        return false;
      }
   })
})

答案 1 :(得分:0)

现代javascript引擎(IE9及更高版本,node.js和标准兼容的浏览器)也支持数组的功能列表方法:mapreducefilter

这是filter的经典案例:

var myObject = products.filter(function(x){return x.ID == selectedValue})[0];

对于较老的borwsers,你可以实现这个垫片:

if (!Array.prototype.filter) {
    Array.prototype.filter = function(callback, myself) {
        if (!myself) myself = this;
        var result = [];
        for (var i=0;i<myself.length;i++) {
            if (callback(myself[i],i,myself)) result.push(myself[i]);
        }
        return result;
    }
}