Jquery对象搜索

时间:2011-10-13 11:46:41

标签: javascript jquery arrays object

我有以下对象,我想要实现的是如果名称与变量匹配,则获取主题索引。

例如:我在视图中进行循环,如果我的任务(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);
    }

}); 

3 个答案:

答案 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;
    }
});