2011-10-13 184 views
0

我有以下對象,我想實現的是獲取主題的索引,如果名稱與變量匹配。Jquery對象搜索

例如:我在視圖中進行循環,如果我的任務(something1)變量與名稱元素相匹配,則返回對象的索引。

由給定的例子,我應該有作爲的結果爲0,

var views = [ 

    { 
     name: "something1", 
     type: something1, 
     columns: something1 
    }, 

    { 
     name: "something2", 
     type: something2, 
     columns: something2 
    }, 

    { 
     name: "something3", 
     type: something3, 
     columns: something3 
    } 

]; 


var task = 'something1'; 

$.each(views, function(index, value) { 

    if (value.name = task) { 
     alert(index); 
    } 

}); 
+0

這應該工作,只要你用英文逗號分隔的對象和你的推薦人解決,例如存在「something1」。 – alex

+0

@alex,Ide希望這些變量僅用於例子,而不是真實姓名 – Petah

+0

是的,但實際上警報包含對象中的所有索引。 – lgt

回答

1

你並不真正需要的jQuery爲此:

參見:http://jsfiddle.net/enNya/2/

var views = [ 
    { 
     name: "something1", 
     type: "something1", 
     columns: "something1" 
    }, 
    { 
     name: "something2", 
     type: "something2", 
     columns: "something2" 
    } 
]; 

var task = 'something2'; 

// Set a var and maintain scope 
var i; 

// Loop each element of the array 
for (i = 0; i < views.length; i++) { 
    // If the X = Y the stop looping 
    if (views[i].name == task) { 
     break; 
    } 
} 

// Check if it was not found 
i = i == views.length ? false : i; 

// Log the result 
console.log(i); 
0

更換something1變量0和value.name ==任務(雙=)

var views=[{ 
    name:"something1", 
    type:0, 
    columns:0 
}, { 
    name:"something1", 
    type:0, 
    columns:0 
}, { 
    name:"something2", 
    type:0, 
    columns:0 
}]; 

var task='something1'; 
$.each(views, function(index, value) { 
    if (value.name==task){ 
     return index; 
    } 
}); 
+0

回報有點毫無意義,不是嗎? – Petah

+0

確實...應該是回報指數; –

+0

錯誤,糾正我,如果我錯了,但沒有'返回'在'$ .each'中完全沒有意義(除了在'break'之外) – Petah

1

這只是一個語法問題,因爲lgt表示不要忘記用逗號分隔對象中的分隔元素。 aslo正確的'equal'運算符是'=='。 'value.name = task'將始終爲真。這意味着我可以將「任務」的內容影響到「value.name」中。

這是您的有效js。

注意,在這個例子中,你將得到2 alertbox ..;)

var views=[ 

{ 
name:"something1", 
type:'something1', 
columns:'something1' 
}, 

{ 
name:"something1", 
type:'something1', 
columns:'something1' 
}, 

{ 
name:"something2", 
type:'something2', 
columns:'something2', 
}, 

]; 


var task='something1'; 

$.each(views, function(index, value) { 

     if (value.name==task){ 

      alert(index); 
     } 
});