Поиск объектов Jquery

#javascript #jquery #arrays #object

#javascript #jquery #массивы #объект

Вопрос:

У меня есть следующий объект, и я хотел бы получить индекс темы, если имя совпадает с переменной.

например: я создаю цикл в представлениях, и если моя переменная task ( 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);
    }

}); 
  

Комментарии:

1. Это должно сработать, при условии, что вы используете запятые для разделения ваших объектов, а ваши ссылки разрешаются, например something1 , существует.

2. @alex, Ide хотелось бы надеяться, что эти переменные предназначены только для примеров, а не для реальных имен

3. Да, но на самом деле оповещение выводит все индексы в объекте.

Ответ №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);
  

Ответ №2:

Это просто вопрос синтаксиса, как сказал lgt, не забывайте разделять элементы внутри вашего объекта запятыми. Также правильным оператором ‘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);
        }
}); 
  

Ответ №3:

замените переменную something1 на 0 и значение.имя == задача (двойное =)

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

Комментарии:

1. действительно … должен быть возвращаемый индекс;

2. ошибка, поправьте меня, если я ошибаюсь, но не return является полностью бессмысленным $.each (за исключением смысла a break )