【问题标题】:search a json object using a property and fetch all the corresponding properties of the object使用属性搜索 json 对象并获取该对象的所有相应属性
【发布时间】:2016-09-14 08:36:28
【问题描述】:

我有一个 json 数组,其中包含具有属性产品 ID 的对象。我能够获取产品 ID 并将其存储在一个数组中,并使用产品 ID 填充搜索框。现在,在从搜索框中选择产品 ID 时,该对象的相应纬度和经度属性需要存储在一个数组中。任何人都可以提出一种方法来做到这一点吗?下面是我获取 json 数据并使用产品 ID 填充搜索框的代码。

function loadsearch(){

     $.ajax({
        type: "GET",
        url: 'data.json',
        dataType: "json",
        crossDomain: true,
        success: function parse(response){
 for(k=0;k<response.BMS.length;k++){
productids.push(response.BMS[k].prodid)
     // var ci = response.records[i].city;

 }

        }
});
}
loadsearch();
$(function()
                {
                    $( "#searchbox" ).autocomplete({
                        source: productids,
                        select: function(event,ui){
                            var va = ui.item.value;
                           // hos(va);
                            //searchVal(va);
                        }
                    });
                });

下面是我的json:

{
    "BMS": [{
        "type": "point",
        "prodid": "NA",
        "fname": "VID_20160907_175716991.mp4",
        "coordinates": "[18.49536685 , 73.81291993]",
        "lat": "18.49536685",
        "lng": "73.81291993",
        "date": "2016-09-07",
        "time": "now",
        "status": "rescan"
    }, {
        "type": "point",
        "prodid": "NA",
        "fname": "VID_20160908_102145088.mp4",
        "coordinates": "[18.49532624 , 73.81284719]",
        "lat": "18.49532624",
        "lng": "73.81284719",
        "date": "2016-09-08",
        "time": "now",
        "status": "rescan"
    }, {
        "type": "point",
        "prodid": "NA",
        "fname": "VID_20160909_103928123.mp4",
        "coordinates": "[18.49547267 , 73.81294396]",
        "lat": "18.49547267",
        "lng": "73.81294396",
        "date": "2016-09-09",
        "time": "now",
        "status": "rescan"
    }, {
        "type": "point",
        "prodid": "01234567",
        "fname": "VID_20160909_104658010.mp4",
        "coordinates": "[18.49541044 , 73.81292334]",
        "lat": "18.49541044",
        "lng": "73.81292334",
        "date": "2016-09-09",
        "time": "now",
        "status": "authentic"
    }, {
        "type": "point",
        "prodid": "NA",
        "fname": "VID_20160909_104958231.mp4",
        "coordinates": "[18.49538404 , 73.81292148]",
        "lat": "18.49538404",
        "lng": "73.81292148",
        "date": "2016-09-09",
        "time": "now",
        "status": "rescan"
    }, {
        "type": "point",
        "prodid": "01234567",
        "fname": "VID_20160909_105249111.mp4",
        "coordinates": "[18.49538324 , 73.81292229]",
        "lat": "18.49538324",
        "lng": "73.81292229",
        "date": "2016-09-09",
        "time": "now",
        "status": "authentic"
    }, {
        "type": "point",
        "prodid": "NA",
        "fname": "VID_20160909_115447094.mp4",
        "coordinates": "[18.58629075 , 73.821569]",
        "lat": "18.58629075",
        "lng": "73.821569",
        "date": "2016-09-09",
        "time": "now",
        "status": "rescan"
    }, {
        "type": "point",
        "prodid": "NA",
        "fname": "VID_20160909_120629821.mp4",
        "coordinates": "[18.58629075 , 73.821569]",
        "lat": "18.58629075",
        "lng": "73.821569",
        "date": "2016-09-09",
        "time": "now",
        "status": "rescan"
    }, {
        "type": "point",
        "prodid": "NA",
        "fname": "VID_20160909_121752248.mp4",
        "coordinates": "[18.58629075 , 73.821569]",
        "lat": "18.58629075",
        "lng": "73.821569",
        "date": "2016-09-09",
        "time": "now",
        "status": "rescan"
    }, {
        "type": "point",
        "prodid": "01234567",
        "fname": "VID_20160909_124615416.mp4",
        "coordinates": "[18.49540612 , 73.8129407]",
        "lat": "18.49540612",
        "lng": "73.8129407",
        "date": "2016-09-09",
        "time": "now",
        "status": "authentic"
    }, {
        "type": "point",
        "prodid": "NA",
        "fname": "VID_20160909_140442837.mp4",
        "coordinates": "[18.58629075 , 73.821569]",
        "lat": "18.58629075",
        "lng": "73.821569",
        "date": "2016-09-09",
        "time": "now",
        "status": "rescan"
    }, {
        "type": "point",
        "prodid": "01234567",
        "fname": "VID_20160913_175112167.mp4",
        "coordinates": "[18.58384342 , 73.82221776]",
        "lat": "18.58384342",
        "lng": "73.82221776",
        "date": "2016-09-13",
        "time": "now",
        "status": "authentic"
    }, {
        "type": "point",
        "prodid": "01234567",
        "fname": "VID_20160913_175131116.mp4",
        "coordinates": "[18.4954413 , 73.8129359]",
        "lat": "18.4954413",
        "lng": "73.8129359",
        "date": "2016-09-13",
        "time": "now",
        "status": "authentic"
    }]
}

【问题讨论】:

    标签: javascript json search


    【解决方案1】:

    也许你正在寻找数组的函数映射。这是一个例子:

    $.ajax({
        type: "GET",
        url: 'data.json',
        dataType: "json",
        crossDomain: true,
        success: function parse(response){
        productids = response.BMS.map(
            function (p) {
                return p.prodid 
            }
        );
    }
    

    编辑

    例子:

    var a = [1, 2, 3, 4];
    var b = a.map( function (x) { return x*2; } );
    console.log(b); //it shows [2,4,6,8]
    

    这里有更多详细信息:

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

    【讨论】:

    • 感谢您的帮助。但是你能解释一下地图是如何工作的吗?
    • 当然!您将函数发送到另一个函数作为参数。此函数必须接收 1 个参数并返回您要存储的值。例如:var a = [1, 2, 3, 4]; var b = a.map( function (x) { return x*2; } );控制台.log(b); //它显示[2,4,6,8]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2012-12-24
    • 2020-01-05
    • 2013-03-09
    相关资源
    最近更新 更多