Javascript 迭代对象以查看是否找到相同的值
我想在下面声明搜索对象,看看它们是否包含相同的值Javascript 迭代对象以查看是否找到相同的值,javascript,jquery,Javascript,Jquery,我想在下面声明搜索对象,看看它们是否包含相同的值 $.each( winning, function( idx, obj ) { }); 我的对象如下所示: 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:
$.each( winning, function( idx, obj ) {
});
我的对象如下所示:
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}];
假设我想看看对象数组中的一个对象的所有值是否都是1。所以{1:1,2:1,3:1}
将返回true,但{1:1,2:0,3:1}
将返回false。这可能吗?我能看到的唯一方法是为每个对象创建大量循环。我不太熟悉jQuery或JavaScript。您可以使用
用你的例子
$.each( winning, function( idx, obj ) {
var groupSum = obj.reduce(function(previousValue, currentValue, index, array){
return previousValue + currentValue;
});
if (groupSum == 3 || groupSum == -3) alert('Identicals');
});
尝试:
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},{7:1, 5:1, 3:1},{7:-1, 5:-1, 3:-1},{7:-1, 5:-1, 3:0},{7:2, 5:2, 3:2}];
var len=长度;
对于(var i=0;iIs它始终是3个组?只需对每个组的值求和,看看它是否==3
。是的,默认情况下它将是0,但根据提供的答案,它可以是-1或1。我如何迭代所有对象并轻松求和。我一直在修改此代码,试图了解它在一段时间内是如何工作的小时,我仍然有问题。我想添加另一个标志选项,因为我可以在对象中插入1或-1。我想查看对象是否包含-1。因此{1:-1,2:-1,3:-1}
也将返回true,但会显示另一条消息。我似乎不知道如何执行此操作。@Yamaha32088我已编辑了答案。您可以添加任意多个选项。基本逻辑是所有3个数字必须相同。现在清楚了吗?哦,对了……需要先将其转换为数组。
$.each( winning, function( idx, obj ) {
var groupSum = obj.reduce(function(previousValue, currentValue, index, array){
return previousValue + currentValue;
});
if (groupSum == 3 || groupSum == -3) alert('Identicals');
});
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},{7:1, 5:1, 3:1},{7:-1, 5:-1, 3:-1},{7:-1, 5:-1, 3:0},{7:2, 5:2, 3:2}];
var len = winning.length;
for(var i=0;i<len;i++){
var data = winning[i];
var txt = "";
var val = [];
var flg = 1;
$.each(data,function(k,v){
val.push(v);
txt += k+":"+v+" ";
});
var vlen = val.length;
for(var j=0;j<vlen;j++){
for(var k=j+1;j<vlen;j++){
if(val[j] != val[k]){
flg = 0;
break;
}
}
}
if(flg == 0){
txt += " false";
}
else{
if(val[0] == 0){
txt += " false";
}
else if(val[0] == 1){
txt += " true 1";
}
else if(val[0] == -1){
txt += " true -1";
}
else if(val[0] == 2){
txt += " true 2";
}
}
$("body").append("<div>"+txt+"</div>");
}