Выдвижение пар ключ-значение к объекту в Javascript - PullRequest
0 голосов
/ 06 марта 2020

У меня есть семь флажков, когда один из них отмечен или снят, я хочу добавить sh текущих флажков в объект checkedCheckboxes. Когда я console.log пара ключ / значение внутри оператора if, я получаю правильный вывод, однако, когда я console.log() checkedCheckboxes после назначения обновленных значений, я получаю это (объект в нижней части log):

console log

Так что я думаю, что с этой строкой должно быть что-то не так: checkedCheckboxes = {...key, ...colourCheckbox[key]};.

Если кто-нибудь может сказать мне что, это было бы огромной помощью.

Полный код:

  // store checkbox values in an object;
  const colourCheckbox = {
    whiteBox: $('#white'),
    blueBox: $('#blue'),
    blackBox: $('#black'),
    redBox: $('#red'),
    greenBox: $('#green'),
    colourlessBox: $('#colourless'),
    multicolouredBox: $('#multicoloured')
  };

  // initialise object to store which checkboxes are checked
  let checkedCheckboxes = {};

  // store checked boxes in 'checkedBoxes'
  $('.colour-checkbox').change(() => {
    checkedCheckboxes.length = 0;
    for (const key in colourCheckbox) {
      if ($(colourCheckbox[key]).is(':checked')) {
        checkedCheckboxes = {...key, ...colourCheckbox[key]};
        console.log(key, colourCheckbox[key])
      }
    }
    console.log(checkedCheckboxes)
  });

1 Ответ

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

Вам не нужно использовать оператор распространения, если вы делаете это так. Попробуйте изменить свой код на этот

// store checkbox values in an object;
      const colourCheckbox = {
        whiteBox: $('#white'),
        blueBox: $('#blue'),
        blackBox: $('#black'),
        redBox: $('#red'),
        greenBox: $('#green'),
        colourlessBox: $('#colourless'),
        multicolouredBox: $('#multicoloured')
      };

      // initialise object to store which checkboxes are checked
      let checkedCheckboxes = {};

      // store checked boxes in 'checkedBoxes'
      $('.colour-checkbox').change(() => {
        checkedCheckboxes.length = 0;
        for (const key in colourCheckbox) {
          if ($(colourCheckbox[key]).is(':checked')) {
            checkedCheckboxes[key] = colourCheckbox[key];
            console.log(key, colourCheckbox[key])
          }
        }
        console.log(checkedCheckboxes)
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...