Смешанное сравнение Javascript между 2 объектами / массивами [duplicate]

У меня есть два разных объекта javascript:

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

а также ...

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

То, что я хотел сделать, - сравнить объект ответа с ключевым объектом, используя (===) или (==), и вернет true , даже если заказ ключа объекта ответа смешан, но до тех пор, пока значение внутри каждой клавиши будет то же самое, он все равно будет возвращать верно .

Условие вернет false, если один из ключей в объекте ответа и его значение отсутствует, или есть новый ключ и значение, установленные внутри объекта ответа.

Любая помощь будет оценена!

javascript,arrays,object,javascript-objects,

0

Ответов: 3


0

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

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

   newanswer = {
  newid : 3, 
  class : "A", 
  name : "Leroy", 
  age : "17", 
  address : "IDN"
}

console.log(isequal(key,answer))
   console.log(isequal(key,newanswer ))

function isequal(prev, now) {
    var prop;
    for (prop in now) {
        if (!prev || prev[prop] !== now[prop]) {
            return false;
        }
    }
    return true; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


0

См Object.entries(), Object.keys()и Array.prototype.every()для получения дополнительной информации.

// Input.
const original = {id: 3, name: "Leroy", class: "A",address: "IDN", age: "17"}
const unordered = {id: 3, class: "A", name: "Leroy",age: "17",address: "IDN"}
const different = {id: 4,class: "B",name: "Lerox",age: "18",address: "IDP"}

// Is Match.
const isMatch = (A, B) => {
  const eA = Object.entries(A)
  return eA.length === Object.keys(B).length // Equivalent number of keys.
  && eA.every(([k, v]) => B[k] === v) // B contains every key + corresponding value in A.
}

// Proof.
console.log(isMatch(original, unordered)) // true
console.log(isMatch(original, different)) // false


0
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
}
JavaScript, массивы, объект, JavaScript-объекты,
Похожие вопросы