Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果'obj'上的每个属性都相同,则返回true_Javascript - Fatal编程技术网

Javascript 如果'obj'上的每个属性都相同,则返回true

Javascript 如果'obj'上的每个属性都相同,则返回true,javascript,Javascript,如何在JavaScript中递归检查对象上的每个属性是否相同 { a:1, b 1, c:{ aa:1, }, }; 将是true 如果我们用aa:2替换aa:1,我们希望返回false这里有一种方法,只需使用IIFE递归迭代,将所有值放入一个数组中,然后比较它们 var obj={ 答:1,, b:1, c:{ aa:1 } }; 函数完全相同(o){ var值=[]; (功能rec(obj){ Object.keys(obj).forEach

如何在JavaScript中递归检查对象上的每个属性是否相同

{  
   a:1,
   b 1,
   c:{  
      aa:1,

   },
};
将是
true

如果我们用
aa:2
替换
aa:1
,我们希望返回
false

这里有一种方法,只需使用IIFE递归迭代,将所有值放入一个数组中,然后比较它们

var obj={
答:1,,
b:1,
c:{
aa:1
}
};
函数完全相同(o){
var值=[];
(功能rec(obj){
Object.keys(obj).forEach(函数(key){
如果(对象的类型[key]==“object”)返回rec(对象[key]);
值。推送(obj[键])
})  
})(o) );
返回值.every(x=>值[0]==x);
}
console.log(isAllSame(obj))*现在可以工作了

          var obj = {  
           a: 1,
           b: 1,
           c:{  
           aa:1
          }
         };

             function checkifEqual(var object, var recent)
            {
             for( var x = 0; x < object.length; x++)
            {
               if(x == 0 && recent == null)
                {
                  recent = object[x];
                  continue;
                }
              if( typeof(object[x]) !== 'object' && object[x] == recent)
              {

                 continue;
              }
              else if(typeof(object[x]) === 'object')
              { 
                 if( checkifEqual(object[x],recent))
                    {
                          continue;  
                    }
                    else
                    {
                       return false;
                    }

              }
             else
             {
              return false;
             }
            }
          return true;
      }

      console.log(checkifEqual(obj,null));
var obj={
答:1,,
b:1,
c:{
aa:1
}
};
函数checkifEqual(变量对象,变量最近)
{
对于(var x=0;x

在第一次调用时,您将传递checkifEqual(Object,null)

您可以获取一个对象来检查值,因为通过使用引用,该值可以回溯到调用函数

要检查的值被包装在一个对象中,它允许在所有递归调用的函数中使用它,即使在第一个函数中,由于对象具有嵌套属性,因此没有实际值第一次可用

在第一次调用时,检查值
,如果为false,则使用对象初始化。如果找到了第一个实数值,那么它将用作对象的反向传播,并且可以在任何运行的
check
调用中使用

使用

every()
方法测试数组中的所有元素是否通过所提供函数实现的测试

如果某个值与第一个找到的值不匹配,则提前退出。这是回调的退出条件和要返回的值

功能检查(对象、值){
值=值|{};
return Object.keys(Object.every)函数(k){
if(对象[k]&&typeof对象[k]='object'){
返回检查(对象[k],值);
}
如果(!(‘值’在值中)){
value.value=对象[k];
返回true;
}
返回对象[k]==value.value;
});
}
log(检查({a:1,b:1,c:{aa:1}));
log(检查({a:{x:1},b:1,c:{aa:1}));

log(检查({a:1,b:1,c:{aa:2}))编写一个递归函数,循环遍历所有属性,检查它们是否与输入值相同。欢迎使用堆栈溢出!所以这不是免费的编码服务。你必须自己尝试解决这个问题。如果你不能让它工作,发布你尝试过的东西,我们会帮你修复。这不是真的,因为
c
不是
1
,而是一个对象。那么,您只想查找原语吗?
const checkMatchingLeaves=(obj)=>{obj=Object.values;obj.forEach((value)=>{if(type of Object(value)=='Object')return true;};
};我试过这种方法,你能解释一下
值|{}
每种方法吗