Попытка сделать встречный объект в JavaScript - PullRequest
1 голос
/ 06 апреля 2019

Я пытаюсь сделать встречный объект в JavaScript следующим образом: РЕДАКТИРОВАТЬ: я добавил пример

    let profile={skill:['javascript','javascript','html','css','css']}
    let objectCount={}

profiles.map(profile => {
        profile.skills.map(skill => {
          skill = skill.toLowerCase();
          if (!(skill in objectCount)) {
            objectCount = { ...objectCount, [skill]: 1 };
          } else {
            objectCount.skill = objectCount.skill + 1;
          }
        });
      });
    }

У меня есть массив профилей, а внутри них - набор навыков: «javascript», «html», «css» и т. Д. и я хочу сделать objectCount, который будет:

objectCount={
  'html':1,
  'javascript:2,
   'css':2
}

но почему-то линия objectCount.skill=objectCount.skill+1 не работает, потому что я получаю объект с 1 в каждом ключе, кто-нибудь знает в чем моя ошибка?

1 Ответ

3 голосов
/ 06 апреля 2019

Вы пытаетесь увеличить значение ключа skill на objectCount объекте, который не существует. Вместо этого вы хотите увеличить значение ключа с именем переменной skill. Таким образом, вы должны использовать objectCount[skill] вместо objectCount.skill:

let profiles = [
  {
    skills: ['html', 'js']
  },
  {
    skills: ['html', 'php']
  }
]
let objectCount = {}

profiles.map(profile => {
  profile.skills.map(skill => {
    skill = skill.toLowerCase();
    if (!(skill in objectCount)) {
      objectCount = { ...objectCount, [skill]: 1 };
    } else {
      objectCount[skill] = objectCount[skill] + 1;
    }
  });
});
console.log(objectCount);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...