2020-10-06 23:10:08 +05:30

3.2 KiB
Raw Blame History

id, challengeType, forumTopicId, localeTitle
id challengeType forumTopicId localeTitle
587d7b7c367417b2b2512b18 1 301153 将键值对添加到对象中

Description

对象object本质上是键值对key-value pair的集合,或者说,一系列被映射到唯一标识符(叫做属性property或者key)的数据。让我们来看一个很简单的例子:
let FCC_User = {
  username: 'awesome_coder',
  followers: 572,
  points: 1741,
  completedProjects: 15
};

上面的代码定义了一个叫做FCC_User的对象,它有 4 个属性,每个属性映射一个特定的值。如果我们想知道FCC_User有多少followers,我们可以这样访问其followers属性:

let userData = FCC_User.followers;
// userData 等于 572

这叫做点符号dot notation。我们还可以用方括号符号来访问对象中的属性:

let userData = FCC_User['followers'];
// userData 等于 572

注意,在用方括号符号时,我们在括号里写的是字符串followers(用引号括起)。方括号符号让我们能用一个变量作为属性名来访问对象的属性(请记住)。若我们在方括号中不写引号而直接写followersJavaScript 引擎会将其看作一个变量,并抛出一个ReferenceError: followers is not defined的错误。

Instructions

用这样的语法,我们还可以向对象中新增键值对。我们已经创建了一个有 3 个属性的foods对象,请为其新增 3 项:值为13bananas属性、值为35grapes属性和值为27strawberries属性。

Tests

tests:
  - text: <code>foods</code>应该是一个对象。
    testString: assert(typeof foods === 'object');
  - text: <code>foods</code>应该有一个值为<code>13</code>的<code>&quot;bananas&quot;</code>属性。
    testString: assert(foods.bananas === 13);
  - text: <code>foods</code>应该有一个值为<code>35</code>的<code>&quot;grapes&quot;</code>属性。
    testString: assert(foods.grapes === 35);
  - text: <code>foods</code>应该有一个值为<code>27</code>的<code>&quot;strawberries&quot;</code>属性。
    testString: assert(foods.strawberries === 27);
  - text: 你应该用点符号或者方括号符号来设置对象的属性。
    testString: assert(code.search(/bananas:/) === -1 && code.search(/grapes:/) === -1 && code.search(/strawberries:/) === -1);

Challenge Seed

let foods = {
  apples: 25,
  oranges: 32,
  plums: 28
};

// change code below this line

// change code above this line

console.log(foods);

Solution

let foods = {
  apples: 25,
  oranges: 32,
  plums: 28
};

// change code below this line
foods['bananas'] = 13;
foods['grapes']  = 35;
foods['strawberries'] = 27;
// change code above this line