2011-09-15 33 views
1

的屬性過濾我有對象的數組,見下圖:jQuery的 - 搜索對象的數組,對象

var orderbyColumns = [Object { Descending=true, TableName="Users", ColumnName="RankCode", more...}, Object { Descending=false, TableName="Users", ColumnName="LastName", more...}] 

現在我想從由表名和屬性的ColumnName提取orderbyColumns。

這將是很好,如果下面的工作,但事實並非如此。有任何想法嗎?

var filter = $(orderbyColumns).find('[ColumnName=' + columnName + ']'); 

這將是很好,如果你可以這樣做:

var filter = from x in orderbyColumns where x.TableName == "Users" && x.ColumnName == "RankCode" select x; 

回答

3

我可能會做這種方式:

var orderByColumns = [ { Descending:true, TableName:"Users", ColumnName:"RankCode", more:"..."}, { Descending:false, TableName:"Users", ColumnName:"LastName", more:"..."}] 
orderByColumns.findObject = findObject; 

var filter = orderByColumns.findObject("ColumnName","LastName"); 
alert(filter.Descending); // returns 'false' 

function findObject(name,val) { 
    var len = this.length; 
    for (var i=0; i<len; i++) { 
     if (this[i][name]===val) { return this[i]; } 
    } 
    return null; 
} 
+0

這足夠接近我可以將其更改爲:function findObjectByTableColumnName(table,column){var len = this.length; (this [i] [「TableName」] === table && this [i] [「ColumnName」] === column){ console(012) .log(table +「 - 」+ column); return this [i]; } } return null; } – Mark

+0

很高興能幫到你 - 別忘了接受你最喜歡的答案。 – Blazemonger

1

你可以看看linqjs -

http://linqjs.codeplex.com/

這應該帶你接近你不錯的查詢。

+0

是的,我已經看到了,但如何是等效jQuery中做了什麼?沒有插件。 – Mark