Сравнение значений и ключей двух объектов - PullRequest
0 голосов
/ 06 марта 2019

Добрый день, все.

У меня есть

Object A = {
  "a" : "3.1.2",
  "b" : "4.1.1",
  "c" : "3.0.0",
  "y" : "5.0.0"
}

Object B = {
  "a" : "^3.1.2",
  "t" : "^4.1.1",
  "c" : "~2.2.2"
}

Как я могу проверить, что Объект B получает тот же ключ, что и в Объекте A?If the key in Object A === key in Object B, проверьте значение этого ключа.Если значение этого ключа одинаково, не делайте ничего.Если значение из Object A !=== value in Object B, поместите его в массив в следующем примере ["c@3.0.0"] Если * key in Object A не существует в Object B, немедленно нажмите клавишу и значение из объекта A в тот же массив ["c@3.0.0", "y@5.0.0"]

1 Ответ

1 голос
/ 06 марта 2019

Вы можете использовать Object.entries(), Array.reduce() и String.replace(), чтобы сделать это.

Повторять записи вобъект A, для каждой записи, проверьте, есть ли запись в B. Если нет, поместите значение в массив.Если есть запись и номера версий одинаковы, ничего не делайте, в противном случае отправьте ее и в массив.

Для сравнения номеров версий вы можете использовать регулярное выражение (/^\^|~/) для удалениясначала ^ или ~ перед сравнением значений.

const A = {
  "a" : "3.1.2",
  "b" : "4.1.1",
  "c" : "3.0.0",
  "y" : "5.0.0"
};

const B = {
  "a" : "^3.1.2",
  "t" : "^4.1.1",
  "c" : "~2.2.2"
};

const result = Object.entries(A).reduce((acc, [key, val]) => {
  const bEntry = B[key] && B[key].replace(/^\^|~/, '');
  return bEntry !== val ? [...acc, `${key}@${val}`] : acc;
}, []);

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...