#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
(за исключением смысла abreak
)