2011-10-13 168 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); 
     } 
});