1

目的の出力のために次のコードを修正する方法、

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"]);
});

それは私に 1 つの値 A:28 を与えるか、1 つのレコード { "A": 28, "B": 0} を完成させる必要があります。

次のパスから「linq.js」を使用:[ https://raw.github.com/gist/1175460/fb7404d46cab20e31601740ab8b35d99a584f941/linq.js ]

JSfiddle のコード: http://jsfiddle.net/Irfanmunir/gLXNw/2/

4

2 に答える 2

3

フィルターは、常に true と評価される文字列です。フィルターを関数内に配置します。

var filter = function(x) { return x['A'] === 28 };

これを使用します:

.Where(filter)

更新されたフィドルを参照してください: http://jsfiddle.net/gLXNw/4/

于 2013-01-08T18:13:31.897 に答える
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")

http://jsfiddle.net/gLXNw/3/

于 2013-01-08T18:12:35.230 に答える