コレクションにラムダ式に基づいて一致するオブジェクトがあるかどうかを判断するために使用できるC# Any()メソッドをシミュレートしたいと思います。
作業を簡単にするために、jQuery の$.grepを使用しました。
Array.prototype.any = function (expr) {
if (typeof jQuery === 'undefined')
throw new ReferenceError('jQuery not loaded');
return $.grep(this, function (x, i) {
return eval(expr);
}).length > 0;
};
var foo = [{ a: 1, b: 2 }, { a:1, b: 3 }];
console.log(foo.any('x.a === 1')); //true
console.log(foo.any('x.a === 2')); //false
eval()
明らかな理由から、それが悪い習慣であることは知っています。しかし、一部のユーザー入力に関連するものではこれを使用しないため、この場合は問題ありませんか?
これはなしで行うことができますeval()
か?式を評価せずに関数に渡す方法がわかりません。