сопоставление двух объектов путем частичного совпадения javascript - PullRequest
0 голосов
/ 22 марта 2020

У меня есть эти 2 объекта, где я хочу изменить значение 2-го объекта, проверив значение 1-го объекта. Но я застрял, я подготовил образец ниже

const inputs = {
  "firstname": "james",
  "lastname": ""
}

const errors = {
  firstname_error: false,
  firstname_error_msg: "first name is invalid",

  lastname_error: false, //make this true because inputs.lastname is false / empty string
  lastname_error_msg: "last name is invalid",

}

Object.entries(inputs).forEach(([key, value]) => {
  if(!value) {
    //how to make errors.lastname_error to true if inputs.lastname is false empty string?
  }
})

Ответы [ 3 ]

0 голосов
/ 22 марта 2020

Если вы используете библиотеку Loda sh, см. isEqual и пересечение функции

0 голосов
/ 22 марта 2020

Я получаю значение ключа inputs и в цикле for проверяю, существует ли относительный ключ с "_error" в errors объекте и значение ok inputs[key] не пусто.

Я использую этот код и работаю:

const inputs = {
  "firstname": "james",
  "lastname": ""
}

const errors = {
  firstname_error: false,
  firstname_error_msg: "first name is invalid",

  lastname_error: false, //make this true because inputs.lastname is false / empty string
  lastname_error_msg: "last name is invalid",

}


for (const key in inputs) {
    if (errors.hasOwnProperty(`${key}_error`) && !inputs[key]) {
        errors[`${key}_error`] = true; 
  }
}
0 голосов
/ 22 марта 2020

Используйте Square Bracket Notation для присвоения значения.

Имя свойства объекта может быть любой допустимой JavaScript строкой или любым, что может быть преобразовано в строку, включая пустую строку. Однако любое имя свойства, которое не является допустимым идентификатором JavaScript (например, имя свойства с пробелом или дефисом или начинающееся с цифры), доступно только с помощью квадратной скобки обозначение . Эта нотация также очень полезна, когда имена свойств должны определяться динамически (когда имя свойства не определяется до времени выполнения).

Объединить _error с ключом, который нацеливается на требуемый ключ в error объект.

const inputs = {
  "firstname": "james",
  "lastname": ""
}

const errors = {
  firstname_error: false,
  firstname_error_msg: "first name is invalid",
  lastname_error: false,
  lastname_error_msg: "last name is invalid",

}

Object.entries(inputs).forEach(([key, value]) => {
  if (!value) {
    errors[`${key}_error`] = true;
  }
});
console.log(errors);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...