如何更正所需输出的以下代码
var Data = [{ "A": -27, "B": -39 }, { "A": 28, "B": 0}]
var filter = "x[A]==28";
var findItem = Enumerable.From(Data)
.Where(function (x) { return filter ; })
.ToArray();
alert(findItem.length);
$.each(findItem, function (i, value) {
alert(value["A"]);
});
它应该给我一个值A:28或完成一个记录{“A”:28,“B”:0},为什么我得到两个值,如何得到正确的结果?
使用以下路径中的“linq.js”: [https://raw.github.com/gist/1175460/fb7404d46cab20e31601740ab8b35d99a584f941/linq.js]
JSfiddle的代码:http://jsfiddle.net/Irfanmunir/gLXNw/2/答案 0 :(得分:3)
您的过滤器是一个始终求值为true的字符串。把你的过滤器放在一个函数中:
var filter = function(x) { return x['A'] === 28 };
并使用此:
.Where(filter)
请参阅更新的小提琴:http://jsfiddle.net/gLXNw/4/
答案 1 :(得分:2)
您必须传递谓词函数或表示此类函数的字符串。你正在传递一个函数,所以linq.js不期望另一个函数/字符串。
对于Linq.js,您必须将此语法用于字符串:
var filter = "x => x['A']==28"; // also note the quotes surrounding A
然后将此函数字符串传递给.Where
:
.Where(filter)
你当然也可以内联这个:
.Where("x => x['A']==28")