Как получить значение объекта, используя цикл for - PullRequest
1 голос
/ 29 февраля 2020

Я пытаюсь использовать normalize-url в своем коде здесь:

socialfields - это объект, который я преобразовал в массив, используя for...of l oop , Значения ключей socialfields - это URL для социальных сетей, например:

{
  youtube: 'youtube.com/peoray',
  facebook: 'facebook.com/peoray',
  twitter: 'twitter.com/peoray',
}

Так что я пытаюсь использовать normalize-url в ссылках. Но это не работает. Я получаю ошибку в том, что TypeError: Cannot read property 'length' of undefined.

Вот код:

for (const [key, value] of Object.entries(socialfields)) {
    if (value.length > 0)
        socialfields[key] = normalize(value, {
            forceHttps: true
        });
}

1 Ответ

1 голос
/ 29 февраля 2020

Вам не нужно делать if (value.length > 0) - все должно быть в порядке: if (value) или, если вы действительно хотели if (value && value.length > 0) - это происходит потому, что свойство .length не существует для нулевого объекта / переменной .

Это все, что вам нужно сделать:

for (const [key, value] of Object.entries(socialfields)) {
  if (value) socialfields[key] = normalize(value, { forceHttps: true });
}

Если вы хотите получить «фантазию», вы можете использовать троичный оператор .. Я все еще думаю if (value) ... - это лучший способ go об этом.

for (const [key, value] of Object.entries(socialfields)) {
  value ? socialfields[key] = normalize(value, { forceHttps: true }) : '';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...