我有以下对象,我想要实现的是如果名称与变量匹配,则获取主题索引。
例如:我在视图中进行循环,如果我的任务(something1
)变量与name元素匹配,则返回对象索引。
根据给定的例子,我应该得到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 :(得分: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);
答案 1 :(得分:1)
这只是一个语法问题,因为lgt说不要忘记用逗号在你的对象中的tpaparate元素。 Aslo正确的'相等'运算符是'=='。 'value.name = task'将永远为真。这意味着我可以将'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);
}
});
答案 2 :(得分:0)
将something1变量替换为0,将value.name == task(double =)
替换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;
}
});