Javascript 按id json、jquery选择元素
我有一个只选择一个元素的问题。我在adres URL中发送两个参数id category和id course。当我点击第一个课程时,我的id=1,id=1。如何使用id选择项目Javascript 按id json、jquery选择元素,javascript,jquery,json,Javascript,Jquery,Json,我有一个只选择一个元素的问题。我在adres URL中发送两个参数id category和id course。当我点击第一个课程时,我的id=1,id=1。如何使用id选择项目 [ { "id": 1, "name": "Tytu³", "isNew": true, "description": "Opis dzia³u", "courses": [ {
[
{
"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);
});
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 Path的参数是$[?(@.id==1)].courses[?(@.id==1)]
,基本上是说,在数组中找到id等于1的第一项,然后在该项下找到id等于1的第一项。请注意,JSON Path总是返回一个数组,因此在末尾是[0]
请参见此处的工作示例:
如果你使用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
});
请参见此处的工作示例: