freeCodeCamp/curriculum/challenges/chinese/10-coding-interview-prep/data-structures/create-a-set-class.md

2.1 KiB
Raw Blame History

id title challengeType videoUrl
8d1323c8c441eddfaeb5bdef 创建一个Set类 1

--description--

在接下来的几个练习中我们将创建一个函数来模拟一个名为“Set”的数据结构。 Set类似于数组但不能包含重复值。 Set的典型用途是简单地检查项目是否存在。这可以用对象实现例如

var set = new Object;
set.foo = true;
//看看我们的集合中是否存在foo
console.logset.foo// true

在接下来的几个练习中我们将从头开始构建一个全功能的Set。对于本练习只要该值中尚不存在该值就创建一个将值添加到set集合的函数。例如

this.add = functionelement{
//一些代码来为集合添加值
}

如果成功添加该值,则该函数应返回true否则返回false

--hints--

您的Set类应该有一个add方法。

assert(
  (function () {
    var test = new Set();
    return typeof test.add === 'function';
  })(),
  'Your <code>Set</code> class should have an <code>add</code> method.'
);

您的add方法不应添加重复值。

assert(
  (function () {
    var test = new Set();
    test.add('a');
    test.add('b');
    test.add('a');
    var vals = test.values();
    return vals[0] === 'a' && vals[1] === 'b' && vals.length === 2;
  })(),
  'Your <code>add</code> method should not add duplicate values.'
);

成功添加值后, add方法应返回true

assert(
  (function () {
    var test = new Set();
    var result = test.add('a');
    return result != undefined && result === true;
  })(),
  'Your <code>add</code> method should return <code>true</code> when a value has been successfully added.'
);

add重复值时, add方法应返回false

assert(
  (function () {
    var test = new Set();
    test.add('a');
    var result = test.add('a');
    return result != undefined && result === false;
  })(),
  'Your <code>add</code> method should return <code>false</code> when a duplicate value is added.'
);

--solutions--