以Javascript为导向的方式理解数据结构

时间:2014-07-13 08:32:19

标签: javascript data-structures

我是一个普通的javascript人。最近我在人们不是js程序员的领域做了一些javascript。他们使用这些奇怪的词汇。我想知道是否有人能够以面向javascript的方式解释数据结构。 (就像一个js例子)。

我在维基百科上看了他们,但他们使用了所有这些非js的思维/术语,这些都让我失望。

从非js的角度来看,我们有四种基本数据结构:

  1. 链接列表 - 我认为他们也称这个哈希表?这只是关键值对?
  2. 数组 - js有此
  3. 二叉树 - 没有js等价物吗?
  4. 堆 - 没有js等价物吗?

3 个答案:

答案 0 :(得分:1)

一切都是javascript是一个对象,

Array是一种对象,通常称为数组对象。

字符串是一种对象,通常称为字符串。

二叉树是一种对象,称为对象。

堆是一种对象,称为对象。

浏览器界面是一个对象。

使用javascript作为脚本语言的其他API是对象。

https://www.youtube.com/watch?v=MfRkdm_rq5E

二叉树可能不是Javascript的本机对象。这只意味着你需要构建对象。

答案 1 :(得分:1)

Javascript包含可以表示为键值对的对象。

密钥必须并且将被转换为字符串。 这是一个对象

{
 name: "Moo", age: 20
}

您可以使用此表示法表示二叉树,但不如C / C ++ / Java版本那么漂亮。

{
 node: 20,
 left: {
   node: 10,
   left: null,
   right: null
 },
 right: {
   node: 30,
   left: null,
   right: null
 }
}

您可以使用someObject.fieldsomeObject["field"]获取字段的值,两者都是等效的!

List和Arrays可以使用javascript Arrays表示,但它们也是一个对象。 观察这一点。

var myArray = [2,3,5];
myArray[0]; // 2
myArray["0"]; // 2
myArray["push"]; // function push()..... etc etc

这是否意味着myArray也是一个对象?嗯,是。恰好您的浏览器足够聪明,当您console.log它时,它会显示数据并正确隐藏方法。

答案 2 :(得分:0)

感谢大家的所有输入。

最有用的是@ChiefTwoPencils提供的链接

网站为i-programmer.info

我了解到有六种类型的数据结构:

  1. 链接列表
  2. 二元树
  3. 尝试次数
  4. 队列
  5. Vectors / ArrayLists
  6. 哈希表
  7. i-programmer.info具有以下数据结构资源:

    他们没有堆积物和东西所以我在Rosetta Code看着@elclanrs推荐。