2013-12-02 4 views
0

Я пытаюсь получить первый индекс, к которому принадлежит объект в массиве. Например:Получить индекс объекта, который содержит значение

winning = [Object, Object, Object, Object, Object, Object, Object, Object] 
0: Object 
    1: 0 
    2: 0 
    3: 0 

1: Object 
    4: 0 
    5: 0 
    6: 0 

2: Object 
3: Object 
4: Object 
5: Object 
6: Object 
7: Object 

Что мне нужно сделать, это запустить команду:

winning[objNum][square] = -1; 

square представляет div идентификатор, который был щелкнули. То, что мне нужно, - это когда я нажимаю на div, который мне нужен, чтобы искать в массиве объектов winning и выяснить, какой объект содержит номер div, который был нажат и сохранить в переменной `objNum. Есть ли способ jQuery или javascript для этого?

Пример, если я нажму на DIV, который имеет id из 5 команд, которые необходимо выполнить это:

winning[1][5] = -1; 

Это, как я создаю объект

var winning = [{1:0, 2:0, 3:0},{4:0, 5:0, 6:0},{7:0, 8:0, 9:0}, 
       {1:0, 4:0, 7:0},{2:0, 5:0, 8:0},{3:0, 6:0, 9:0}, 
       {1:0, 5:0, 9:0},{7:0, 5:0, 3:0}];  

HTML:

<body> 
    <div id="wrapper"> 
     <div id="container"> 
      <div id="blah"> 
       <div id="1" class="boardSquares"></div> 
       <div id="2" class="boardSquares"></div> 
       <div id="3" class="boardSquares"></div> 
       <div id="4" class="boardSquares"></div> 
       <div id="5" class="boardSquares"></div> 
       <div id="6" class="boardSquares"></div> 
       <div id="7" class="boardSquares"></div> 
       <div id="8" class="boardSquares"></div> 
       <div id="9" class="boardSquares"></div> 
      </div> 
     </div> 
    </div> 
</body> 
+0

нужно увидеть карту объектов, чтобы сделать это – charlietfl

+0

@charlietfl я добавил код, я считаю, что это то, что вы хотели – Yamaha32088

+0

, если идентификаторы не являются уникальными иметь проблему. WIll нужен способ для сопоставления индекса массива. Создайте демо с html. Я предполагаю, что вы можете получить индекс, основанный на структуре html – charlietfl

ответ

1

С пометкой jQuery:

$.each(winning, function(idx, obj){ 
    if(obj[ square] != undefined){ 
     obj[ square]= -1; 
     return false;/* break loop*/ 
    } 
}); 

Все ключи всех объектов должны быть уникальными.

Если могли видеть вашу HTML структуру, скорее всего, будет иметь возможность использовать его для индексирования объекта в массиве и не должны выполнять эту петлю

+0

Я добавил еще код и попробовал ваш, но он ничего не обновляет – Yamaha32088

+0

создайте демо в jsfiddle.net с кодом, который вы пытаетесь. Я мог бы, но я не вижу связи между вашими div и тремя клавишами в каждом объекте. Я считаю, что ваши данные могут быть реструктурированы, но до сих пор неясно, что все это за – charlietfl

+1

объект [square] может существовать и быть нулевым. Вместо этого вы должны использовать «square in obj». http://jsfiddle.net/upN8d/ –

0

Это было довольно просто ...: D ... только некоторые разные способ думать. проверить демо ...

http://jsfiddle.net/sjLQ3/

var objs=[{0:0,1:0},{2:0,3:0},{4:0,5:0}],n; 

$('.click').click(function(){ 
    n=$(this).index(); 
    objs.forEach(function(v,i){ //not a jquery function 
     if(objs[i][n]!=undefined) objs[i][n]-=1; 
    }); 

}); 
Смежные вопросы