【问题标题】:can a value of a key/value pair also be a key?键/值对的值也可以是键吗?
【发布时间】:2020-04-09 15:14:42
【问题描述】:

enter image description here

在此示例中,要使用键“title”和“director”记录属性的值,使用 obj[key]。因为我们已经在对象的执行上下文中:在这个例子中是电影。 "Obj[key]" 中的 Obj 必须引用 title: 'a', and director: 'b' 和 key 指向这些对象的值,所以 "a" 和 "b" 被标注为键,对吧?

这些“key-type”值也可以用 obj[value] 记录吗?


这是课程中的一个示例,但讲师没有很好地解释它,所以我可能已经花了两个小时试图理解这个术语。我希望这是正确的,如果不是;我真的很感激我所犯的任何错误。

提前致谢

【问题讨论】:

  • 您可能应该请您的导师更好地解释它。他的工作是找到一种方法来明确这个概念。
  • 如果你尝试 obj['a'] 什么都不会输出,因为只有 title、releaseYear、rating、director 键。如果你尝试 obj['title'] 值 'a' 将被输出。
  • @Robert Harvey 我没有被直接教授,我正在学习课程。但令我惊讶的是,没有选择在讲座中添加评论。只有一个论坛,但没有一个活跃的专业人士。还是有很多活动。不是一个理想的情况没有

标签: javascript object key


【解决方案1】:

将图片中的代码放在这里以便于参考,还稍微更改了日志以明确哪个是关键,哪个是值:

const movie = {
  title: 'a',
  releaseYar: 2018,
  rating: 4.5,
  director: 'b'
};

showProperties(movie);

function showProperties(obj) {
  for (let key in obj) 
    if (typeof obj[key] === 'string') {
      console.log('key -->', key);
      console.log('value -->', obj[key]);
    }
}

不,该示例中的“a”和“b”不是键,它们是值。 在该示例中,movie 是对象。电影对象的键是titlereleaseYearratingdirector。顺便说一下,Key 只是“属性”的另一个名称。

showProperties 函数中,您循环遍历每个键——即。在每次迭代中,key 首先是 title,然后是 releaseYear,依此类推。 第一次迭代中的obj[key] 将是movie['title'],这将给出a 的值。

控制台日志显示密钥,后跟 movie[key] 的值。因此title 的键和a 的值是第一个。

【讨论】:

    【解决方案2】:

    请看评论理解代码并运行代码。

    const movie = {
      title: "SOmething",
      releaseDate: 2020,
      rating: 4.5,
      director: "Someone",
    };
    function showProperties(object) {
      for (const key in object) {
        const value = object[key]; // get value of the key
        console.log(key, value); // log everything
        // check if value is type string
        if (typeof value === "string") {
          console.log(key, value); // then only if value is string
        }
      }
    }
    showProperties(movie);

    【讨论】:

    • Thaaaank 你这么多.. 这真是一件令人沮丧的事情,我只是无法在任何地方找到正确的答案。
    • 哈哈!! :-D 雇用我.. 请接受作为答案。如果对你有帮助。谢谢。
    • {edit} 我以某种方式添加空行而不发送评论。所以剩下的就是:唯一我仍然有点困惑的是为什么键/属性的值(键实际上总是一个属性?)被标记为对象[键]。既然我们已经在对象的执行上下文中了,不能写成[key]吗?
    • 我不是已经接受了答案吗,反正我在任何地方都看不到该选项
    • 哈哈哈!不用担心 .. 。关于你的问题,不可能得到key by value。这里obj[val] !== 'key',因为这里的值将被视为键
    猜你喜欢
    • 2018-10-06
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2020-03-26
    • 2018-01-27
    • 2011-03-31
    • 1970-01-01
    • 2018-01-27
    相关资源
    最近更新 更多