【问题标题】:How to query/ find a single element in a JSON array with linq.js如何使用 linq.js 在 JSON 数组中查询/查找单个元素
【发布时间】:2014-08-04 06:22:49
【问题描述】:

我有一个 JSON 数组 (javascript)。我正在使用 linq.js 过滤/查询数组并找到单个元素/第一个元素。正确的语法是什么?

我的数据:

[{
    "Fname": "Chinmaya",
    "Lname": "Bhatta",
    "DOB": "/Date(328645800000)/",
    "PassportNumber": "",
    "Expirydate": "/Date(315513000000)/",
    "Mobilenum": "91-9740814702",
    "EmailID": "santu.yyyyy@yahoo.com",
    "IssueCountry": ""
},
    ...
]

我的代码:

var tbl =  $(this).closest('table');

var fname= $(tbl).find('[id*=txtFirstName]').val();

var lname= $(tbl).find('[id*=txtLastName]').val();

var filtered = Enumerable.From(fulllist)
                         .Select("$.Fname + ':'+ $.fname+")
                         .ToArray();

但它正在抛出错误。有人能告诉我基于 Fname 和 Lname 查询的正确语法是什么吗? BTW fulllist 是我的数组的名称。

提前致谢。

【问题讨论】:

    标签: jquery json linq.js


    【解决方案1】:

    jsFiddle

    就像使用 SQL 查询一样,您必须指定“where”子句来过滤整个数据集的结果:

    var filtered = Enumerable
                .From(data)
                .Where("$.Fname == '" + fname + "' && $.Lname == '" + lname + "'")
                .Select("$.Fname + ':' + $.Lname + ':' + $.DOB")
                .ToArray();
    

    您还可以使用接受回调函数的Where 语法的显式形式:

    Where(function (x) { return x.Fname == fname && x.Lname == lname });
    

    编辑

    要使过滤后的结果集成为 JS 对象数组,请删除对 Select (jsFiddle 2) 的调用:

    var filtered = Enumerable
                   .From(data)
                   .Where("$.Fname == '" + fname + "' && $.Lname == '" + lname + "'")
                   .ToArray();
    

    【讨论】:

    • 您好 nbrooks,感谢您的快速回复。它返回所有匹配的值。实际上我只想要一行/一条记录。二、javascript代码中如何访问单条记录的数据?
    • 您好,nbrooks,这个方法只返回值,而不是文件名。我希望它像 {"Fname": "Chinmaya", "Lname": "Bhatta"} 格式。但我得到的只是价值观。请帮帮我。
    • @santubangalore 您希望结果是字符串还是对象?请参阅上面的编辑,它将结果作为对象返回。
    • 您好 nbrooks,谢谢,我的第二个问题由此解决,但第一个问题仍然存在。即我只想要一行/记录,但我得到多行。如何将其过滤到仅一行?并从 javascript 代码中访问数据项?
    • @santu 我上面的演示是将结果集过滤到单行,并将结果(使用 JavaScript)记录到控制台。如果某些东西不起作用,请编辑您的问题以描述预期和实际结果,并编辑 jsfiddle(或自己制作)以重现问题。
    猜你喜欢
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 2015-07-10
    • 2017-12-05
    • 1970-01-01
    相关资源
    最近更新 更多