кодесурса
«JavaScript

JavaScript: выполнить глубокое сравнение между двумя значениями, чтобы определить, являются ли они эквивалентными

script1adsense2code
script1adsense3code

Основы JavaScript (синтаксис ES6): упражнение 47 с решением

Напишите программу на JavaScript для глубокого сравнения двух значений и определения их эквивалентности.

Примечание. Проверьте, являются ли эти два значения идентичными, являются ли они обоими объектами Date с одинаковым временем, используя Date.getTime () или они оба являются необъектными значениями с эквивалентным значением (строгое сравнение). Проверьте, является ли только одно значение нулевым или неопределенным или отличаются ли их прототипы. Если ни одно из указанных выше условий не выполнено, используйте Object.keys (), чтобы проверить, имеют ли оба значения одинаковое количество ключей, затем используйте Array.every (), чтобы проверить, существует ли каждый ключ в первом значении во втором, и если они эквивалентны, вызывая этот метод рекурсивно.

Пример решения:

HTML-код:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Perform a deep comparison between two values to determine if they are equivalent</title>
</head>
<body>
</body>
</html>

Код JavaScript:

//#Source https://bit.ly/2neWfJ2 
const equals = (a, b) => {
  if (a === b) return true;
  if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();
  if (!a || !b || (typeof a !=='object' && typeof b !=='object')) return a === b;
  if (a === null || a === undefined || b === null || b === undefined) return false;
  if (a.prototype !== b.prototype) return false;
  let keys = Object.keys(a);
  if (keys.length !== Object.keys(b).length) return false;
  return keys.every(k => equals(a[k], b[k]));
};
console.log(equals({ a: [2, { e: 3 }], b: [4], c: 'foo' }, { a: [2, { e: 3 }], b: [4], c: 'foo' }));

Пример вывода:

 правда

Иллюстрированная презентация:

«JavaScript

Блок - схема:

«Блок-схема:

Демонстрация в реальном времени:

См. Pen javascript-basic-упражнение-1-47 от w3resource ( @ w3resource ) на CodePen .


Улучшите этот пример решения и опубликуйте свой код через Disqus

Предыдущий: Написать программу JavaScript для карри (карри) функции
Далее: Напишите программу на JavaScript, чтобы получить массив имен свойств функций из собственных (и необязательно наследуемых) перечисляемых свойств объекта.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code