Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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
2个对象/数组之间的Javascript混合比较_Javascript_Arrays_Object_Javascript Objects - Fatal编程技术网

2个对象/数组之间的Javascript混合比较

2个对象/数组之间的Javascript混合比较,javascript,arrays,object,javascript-objects,Javascript,Arrays,Object,Javascript Objects,我有两个不同的javascript对象: key = { id : 3, name : "Leroy", class : "A", address : "IDN", age : "17" } 而且 answer = { id : 3, class : "A", name : "Leroy", age : "17", address : "IDN" } 我想做的是使用(==)或(==)将应答对象与键对象进行比较,并将返回true,即使应答

我有两个不同的javascript对象:

key = {
  id : 3, 
  name : "Leroy", 
  class : "A", 
  address : "IDN", 
  age : "17"
}
而且

answer = {
  id : 3, 
  class : "A", 
  name : "Leroy", 
  age : "17", 
  address : "IDN"
}
我想做的是使用(==)或(==)将应答对象与键对象进行比较,并将返回true,即使应答对象键顺序混合,但只要每个键内的值相同,它仍将返回true

如果应答对象中的某个键及其值不存在,或者应答对象中设置了新的键和值,则条件将返回false

任何帮助都将不胜感激

键={
id:3,
姓名:“勒罗伊”,
班级:“A”,
地址:“IDN”,
年龄:"17岁",,
}
答案={
id:3,
班级:“A”,
姓名:“勒罗伊”,
年龄:"17岁",,
地址:“IDN”
}
新答案={
newid:3,
班级:“A”,
姓名:“勒罗伊”,
年龄:"17岁",,
地址:“IDN”
}
控制台日志(isequal(键,应答))
console.log(isequal(key,newanswer))
函数相等(上一个,现在){
var-prop;
用于(现在支持){
如果(!prev | | prev[prop]!==现在[prop]){
返回false;
}
}
返回true;
}
有关更多信息,请参阅和

//输入。
const original={id:3,姓名:“Leroy”,班级:“A”,地址:“IDN”,年龄:“17”}
常量无序={id:3,类别:“A”,姓名:“Leroy”,年龄:“17”,地址:“IDN”}
const different={id:4,class:“B”,name:“Lerox”,age:“18”,address:“IDP”}
//这是一场比赛。
常数isMatch=(A,B)=>{
常量eA=对象。条目(A)
返回eA.length==Object.keys(B).length//相等的键数。
&&eA.each([k,v])=>B[k]==v)//B包含A中的每个键+对应值。
}
//证明。
log(isMatch(原始,无序))//true
console.log(isMatch(original,different))//false
常量键=(o)=>对象键(o).排序((a,b)=>a>b)
常数相等=(键,答案)=>{
设keyArr=键(键)
设keyLen=keyArr.length
让answerArr=键(答案)
如果(keyLen!==answerArr.length)返回false
for(设i=0;i
我是新来的,我从副本中找到了答案(谢谢)。我应该把它贴在某个地方还是只嵌入链接?还是不?
const keys = (o) => Object.keys(o).sort((a, b) => a > b)
const isEqual = (key, answer) => {
  let keyArr = keys(key)
  let keyLen = keyArr.length
  let answerArr = keys(answer)
  if (keyLen !== answerArr.length) return false
  for (let i = 0; i < keyLen; i++) {
    if (key[keyArr[i]] !== answer[answerArr[i]]) return false
  }
  return true
}