React / JSX: перебор объекта с парами ключ / значение - PullRequest
1 голос
/ 18 февраля 2020

У меня есть объект, который я использую, чтобы отслеживать, какие флажки были отмечены в пользовательском интерфейсе.

Это выглядит примерно так:

      checked: { key1: false, key2: false, key3: false, key4: false, key5: false, key6: false, key7: false, key8: false, key9: false, key10: false },

Мне нужно иметь возможность перебирать этот объект и устанавливать определенные значения в true / false, в зависимости от поведения, которое пользователь хочет от пользовательского интерфейса.

У меня есть два вопроса:

  1. Есть ли более элегантный способ создания этого экземпляра?

  2. Как бы я это сделал, используя метод Object.entries?

Я бы хотел сделать что-то подобное, но это не так t работа:


let obj = {k1: false, k2: false, k3: false}

Object.entries(obj).forEach(([key, value]) => {
    obj.value = true;
  console.log(`${key} ${value}`);

});

Спасибо!

Ответы [ 2 ]

3 голосов
/ 18 февраля 2020

Если вам нужно установить для всех значений в объекте значение true, вы можете сделать что-то вроде этого

Object.keys(obj).forEach(key => obj[key] = true);

Object.keys вернет все ключи этого объекта в массиве. Зацикливая этот массив и используя obj[key], мы можем получить доступ к каждому ключу объекта и установить для него значение true

2 голосов
/ 18 февраля 2020

Чтобы ответить на ваши вопросы -

  1. Это довольно хороший способ хранения нескольких проверенных логических значений, поскольку вы можете получить к ним доступ, используя деструктуризацию объектов, например const { key1, key2, ... } = checked, которая, IMHO, создает код более читабельно.

  2. Попробуйте -

Object.entries(obj).forEach([key, value] => {
  // Set obj key/value
  obj[key] = true  // or use value here
})

См. -

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries

...