获取包含值的对象的索引

时间:2013-12-02 02:25:38

标签: javascript jquery

我试图在数组中获取对象所属的第一个索引。例如:

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个ID。我需要发生的是当我单击一个div时,我需要它来搜索winning对象数组,并找出哪个对象包含被点击并存储在变量`objNum中的div的编号。这样做有jQuery或javascript方法吗?

示例如果我单击id为5的div需要运行的命令是:

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>

2 个答案:

答案 0 :(得分:1)

自标记的jQuery:

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

所有对象中的所有键必须是唯一的。

如果可以看到你的html结构,很可能会用它来索引数组中的对象而不必执行这个循环

答案 1 :(得分: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;
    });

});