簡體   English   中英

通過ID JSON,jQuery選擇元素

[英]Select element by id json, jquery

我有一個問題,女巫只能選擇一個元素。 我在adres URL中發送了兩個參數ID類別和ID課程。 當我單擊第一門課程時,我的ID = 1,ID = 1。 如何使用ID選擇項目

[
    {
        "id": 1,
        "name": "Tytu³",
        "isNew": true,
        "description": "Opis dzia³u",
        "courses": [
            {
                "id": 1,
                "isNew": true,
                "price": 120,
                "time": 50,
                "assumptions": "Assumption 1",
                "knowledge": "Wiedza",
                "domainId": 1,
                "programs": [

這是我關於jQuery的問題

var idKategori = $.urlParam('idkat');
var idKursu = $.urlParam('id');

      $.getJSON('http://tommagisterka.apphb.com/api/Domains', function(response) {

      }); 

  });

有兩種方法可以解決此問題。 您可以編寫一些腳本來循環遍歷內部數組外部的每個項目,並檢查每個密鑰。 還有一些庫可以提取您感興趣的部分,而無需編寫大量代碼。

首先,如果您想自己編寫代碼,則可以執行以下操作:

function findCourse(json, idKategori, idKursu) {

    for (var i = 0; i < response.length; i++) {
        var kategori = response[i];

        if (kategori.id == idKategori && kategori.courses) {
            for (var j = 0; j < kategori.courses.length; j++) {
                var kursu = kategori.courses[j];
                if (kursu.id == idKursu) {
                    return kursu;
                }
            }
        }
    }
}

var idKategori = $.urlParam('idkat');
var idKursu = $.urlParam('id');

  $.getJSON('http://tommagisterka.apphb.com/api/Domains', function(response) {
        var course = findCourse(response, idKategori, idKursu);
  }); 

這是很多代碼。 有一些庫可以使這一過程變得更簡單。 JSON Path( http://goessner.net/articles/JsonPath/ )和Lodash( https://lodash.com )只是兩個示例。

使用JSON Path,您將執行以下操作:

var idKategori = $.urlParam('idkat');
var idKursu = $.urlParam('id');

  $.getJSON('http://tommagisterka.apphb.com/api/Domains', function(response) {
        var course = jsonPath(response, "$[?(@.id==" + idKategori + ")].courses[?(@.id==" + idKursu + ")]")[0];
  });

傳遞給JSON路徑的參數是$[?(@.id==1)].courses[?(@.id==1)] ,它的基本含義是,找到ID為1的數組中的第一項然后在第一條路線下id等於1。請注意,JSON Path始終返回一個數組,因此最后是[0]

在此處查看工作示例: http : //www.jsonquerytool.com/sample/jsonpathmultilevelfilter

如果要使用Lodash,它將看起來像這樣。

var idKategori = $.urlParam('idkat');
var idKursu = $.urlParam('id');

  $.getJSON('http://tommagisterka.apphb.com/api/Domains', function(response) {
    var course = _(response).chain()                // Setup the response for chaining multiple filters
        .where(function (x) { return x.id == idKategori; })  // Select the category with id of idKategori
        .first()                                             // Take the first item in the result array
        .result('courses')                                   // Get the courses property from the category object
        .where(function (x) { return x.id == idKursu; })     // Get the course with id of idKursu in the course array
        .first()                                             // Get the first item in the result array
        .value();                                            // Get the output from the lodash query

  });

在此處查看工作示例: http : //www.jsonquerytool.com/sample/lodashmultilevelfilter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM