【问题标题】:How to get the value of an object using for of loop如何使用for of循环获取对象的值
【发布时间】:2020-06-13 01:53:48
【问题描述】:

我正在尝试在我的代码中使用normalize-url

socialfields 是我使用for...of 循环转换为数组的对象。 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
        });
}

【问题讨论】:

  • 显然其中一个社交媒体网址是null。这意味着value 将是nullnull.length 是一个错误。
  • 我不明白。你是什​​么意思它将为空。对不起我的菜鸟问题
  • 你不应该做if (value.length > 0) - 以下应该没问题:if (value) 或者如果你真的想要if (value && value.length > 0) - 这是因为.length 属性不存在一个空对象/变量。
  • 在 for 循环之前打印 socialfields 对象。我的猜测是你有这样的条目pinterest: null
  • if (value)不够干净吗?这就是你所需要的......

标签: javascript arrays node.js object


【解决方案1】:

你不应该做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 });
}

如果你想要“花哨”,你可以使用ternary operator.. 我仍然认为if (value) ... 是最好的方法。

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

【讨论】:

  • 不确定第二个选项。 VSCode 抛出错误';' expected.ts(1005)
  • 是的,我删除了它,我忘了你不能在作业前使用它。
猜你喜欢
  • 2017-09-17
  • 2015-07-05
  • 2017-02-08
  • 1970-01-01
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
相关资源
最近更新 更多