Javascript 获取包含值的对象的索引
我试图获取对象在数组中所属的第一个索引。例如:Javascript 获取包含值的对象的索引,javascript,jquery,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 我需要做的是运行如下命令: winnin
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
对象数组中搜索,找出哪个对象包含被单击的div的编号,并存储在变量`objNum中。有没有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:
自从标记jQuery之后:
$.each(winning, function(idx, obj){
if( obj[ square] != undefined ){
obj[ square]= -1;
return false;/* break loop*/
}
});
所有对象中的所有关键点都必须是唯一的
如果你能看到你的html结构,你很可能会用它来索引数组中的对象,而不必执行这个循环,这很简单…:D…只是另一种思考方式。查看演示
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;
});
});
需要查看对象的地图吗that@charlietfl我添加了一些代码,我相信这就是你想要的,如果ID不是唯一的,那就有问题了。将需要一种方法来匹配数组索引。请用html创建演示。我猜你可以得到基于html结构的索引ID是分区唯一的听起来像
Math.floor(square/3)==objNum
是你想要的吗?我添加了更多的代码并尝试了你的代码,但它没有更新任何东西用你正在尝试的代码在jsfiddle.net中创建一个演示。我可以,但我看不出你的div和每个对象中的3个键之间的关系。我相信你的数据可以重组,但仍然不清楚yetobject[square]可能存在并且为零。您应该使用“长方体中的正方形”。若html结构如此简单……你们可以在DOM中使用元素索引……并像这样跳过循环
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;
});
});