Javascript 使用jQuery处理JSON对象

Javascript 使用jQuery处理JSON对象,javascript,jquery,ajax,json,data-structures,Javascript,Jquery,Ajax,Json,Data Structures,我的JSON对象的构造如下: var Source = { Object: [ //Array {Title: 'Test', Type: 'Pet', Category: 'Cat', Description: 'Fluffy', Count: 2 } ] }; 我能够理解如何正确地添加到“Object”数组中,但是我似乎无法理解jQuery语法来根据属性列表标题、类型、类别等查询对象 我将一些测试代码放入一个click事件中,通常检查源代码的长度。对象测试数

我的JSON对象的构造如下:

var Source =
{
    Object: [ //Array
        {Title: 'Test', Type: 'Pet', Category: 'Cat', Description: 'Fluffy', Count: 2 }
    ]
};
我能够理解如何正确地添加到“Object”数组中,但是我似乎无法理解jQuery语法来根据属性列表标题、类型、类别等查询对象

我将一些测试代码放入一个click事件中,通常检查源代码的长度。对象测试数据生成两个对象,以确认有数据要处理,它是通过ajax调用填充的

function clickTest(category, type) {
    $(Source).find('Object[Category=\"' + category + '\"]').each(function() {
        alert($(this).attr('Category')); //doesn't work
    });
}

像这样查询JSON对象的正确方法是什么?

JSON是JavaScript的本机代码,无需使用jQuery库即可循环使用。[]表示数组,{}表示对象,因此:

var obj = Source.Object;
for (var i = 0, len = obj.length; i < len; i++) {
    if (obj[i].Category == category)
        alert(obj[i].Category + ' ' + obj[i].Title);
}

这也更快!好东西。

JSON是JavaScript的本机代码,无需使用jQuery库即可循环使用。[]表示数组,{}表示对象,因此:

var obj = Source.Object;
for (var i = 0, len = obj.length; i < len; i++) {
    if (obj[i].Category == category)
        alert(obj[i].Category + ' ' + obj[i].Title);
}

这也更快!好东西。

源代码是JSON对象,而不是HTML DOM。因此,必须对数组使用jQuery实用程序函数:

$.grep( Source.Object, function(e) { return e.Category == category } ).each(...)

源是一个JSON对象,而不是HTML DOM。因此,必须对数组使用jQuery实用程序函数:

$.grep( Source.Object, function(e) { return e.Category == category } ).each(...)

JSon是一种以字符串格式转录javascript对象并在线传输的方法。该格式的一个优点是javascript可以直接读取,因此您的源对象已经准备好进行处理

function processSource(source, category)
{
    var counter = 0;
    for (counter = 0; counter < source.Object.length; counter += 1)
    {
        if (category === source.Object[counter].category) {
           // do something
        }
    }
}

JSon是一种以字符串格式转录javascript对象并在线传输的方法。该格式的一个优点是javascript可以直接读取,因此您的源对象已经准备好进行处理

function processSource(source, category)
{
    var counter = 0;
    for (counter = 0; counter < source.Object.length; counter += 1)
    {
        if (category === source.Object[counter].category) {
           // do something
        }
    }
}


我必须说,wtf?对不起,伙计,我做错了什么?@C鲍尔:你想做什么?是否要使用CSS选择器查询JavaScript对象?CSS选择器和jQuery的大多数方法都是要在DOM上使用的。@CBauer:我猜是这样的。我甚至不知道你想在这里实现什么。您有一个普通的javascript对象,您可以通过类似Source.object.Category的方式访问它。顺便说一句,name对象可能是个坏主意,因为它是一个保留字,但是您试图将该对象拉入jQuery构造函数以获得什么?来自javascript对象的jQuery对象?@C Bauer:XML使用DOM表示,DOM可以看作是各种javascript对象的巨大集合。JSON表示没有任何选择器支持或事件的普通JavaScript对象。此操作不需要选择器。你可以使用。-运算符访问对象的属性。我必须说,wtf?对不起,我做错了什么?@C鲍尔:你想做什么?是否要使用CSS选择器查询JavaScript对象?CSS选择器和jQuery的大多数方法都是要在DOM上使用的。@CBauer:我猜是这样的。我甚至不知道你想在这里实现什么。您有一个普通的javascript对象,您可以通过类似Source.object.Category的方式访问它。顺便说一句,name对象可能是个坏主意,因为它是一个保留字,但是您试图将该对象拉入jQuery构造函数以获得什么?来自javascript对象的jQuery对象?@C Bauer:XML使用DOM表示,DOM可以看作是各种javascript对象的巨大集合。JSON表示没有任何选择器支持或事件的普通JavaScript对象。此操作不需要选择器。您可以使用。-运算符访问对象的属性。听起来一定很极端,不是吗+1-很少正确使用$.grep,.each after会爆炸,但它应该被包装在$.each…,因为.grep返回一个数组。我想更正:你可以使用jQuery实用程序函数-它们不是必需的,因为这只是简单的JavaScript。很好,我不知道$.grepobject,功能,但最好知道:听起来一定很极端,不是吗+1-很少正确使用$.grep,.each after会爆炸,但它应该被包装在$.each…,因为.grep返回一个数组。我想更正:你可以使用jQuery实用程序函数-它们不是必需的,因为这只是简单的JavaScript。很好,我不知道$.grepobject,函数,但最好知道:我一直认为jQuery比构建javascript循环来进行这些检查要快。@C Bauer:jQuery会更短。纯JavaScript会更快,因为闭包会从其他作用域等调用变量。毕竟,jQuery是用JavaScript编写的-调用它并不总是比自定义解决方案快。我一直认为jQuery会比构建JavaScript循环来进行这些检查更快。@C Bauer:jQuery会更短。纯JavaScript会更快,因为闭包从其他作用域调用变量,等等。毕竟,jQuery是用JavaScript编写的——调用它并不总是比自定义解决方案更好。