【问题标题】:What is a JavaScript Array?什么是 JavaScript 数组?
【发布时间】:2011-06-22 18:53:11
【问题描述】:

我试图理解什么是 JavaScript 数组,因为传统编程语言将数组定义为可以使用偏移量寻址的连续存储区域。

现在,一个普通的 JavaScript 对象可以被寻址为:

myObj.myProperty = "my Value";

myObj["myProperty"] = "my Value";

因此,JavaScript 数组只是在寻址中使用数字而不是名称:

myObj[0] = "my Value";
myObj.length // === 1

JavaScript 数组也有方法,例如 slice() 和 join()。

问:到目前为止我所说的是真的吗?

【问题讨论】:

  • @harper89: w3fools.com
  • 稍微更正一点:“JavaScript 数组只是在寻址中使用数字而不是名称”——它实际上仍在使用字符串。当您输入myObj[0] 时,它会转换为myObj['0']

标签: javascript


【解决方案1】:

JavaScript 数组是一个散列对象,其中包含使用Array.prototype 附加的数组函数。简单来说,这是 JavaScript 中的“数组”:

var x = {
    length : 3,
    '0'    : 'first',
    '1'    : 'second',
    '2'    : 'third'
};
x.__proto__ = Array.prototype;

所有的数组函数都只作用于索引,正如你所期望的,但是你也可以对数组对象做任何你对一般 JS 对象做的事情:

ary.foo = 'bar';

【讨论】:

  • @Neal - 只是因为它是 JS 中的语法错误。 x['0'] 工作正常
  • @cwolves,是的,我知道,但您说您可以执行与普通对象相同的操作,而您不能。
  • @Neal - 是的,你可以。您也不能对通用对象执行 x.0 :)
  • @cwolves。是的,但数组对象上的所有索引通常都是数字
  • @Neal - 他们总是数字。因为Array 继承自Object,所以你不能对不能做数组的通用对象做任何事情。点表示法不适用于数字这一事实并不能否定这一点,它只是意味着您不能以相同的方式访问数字属性。
【解决方案2】:

对于一个基本的是或否问题:你说的都是真的。

这是whole array tutorial

【讨论】:

    【解决方案3】:

    一本好书(这让我一开始就开始了) Mastering Javascript Arrays

    【讨论】:

    • 谢谢艾特斯!今晚晚些时候我会看看它!
    • 大声笑,你提到“谢谢痴呆”:D 他刚刚修正了我的拼写错误。 XD
    【解决方案4】:

    任何 JavaScript 数组都是一个对象,可以使用不同的对象*作为键,使其成为哈希。

    *所有与字符串不同的对象都将被转换为字符串[object Object],因此它们将充当同一个键! (感谢 cwolves :)

    【讨论】:

    • @cwolves - 任何不同于 null 和 undefined 的“非字符串”值都将转换为字符串,因为所有对象属性名称都是字符串!
    • 是的,我意识到这一点,但是说你可以使用“不同的对象作为键”意味着这将按预期工作:var x={}, y={}, z={}; x[y] = 1; x[z] = 2;,但实际上你会得到x == {'[object Object]' : 2}。仅供参考,nullundefined 也可以工作:)
    • 请注意,您可以在对象上定义自己的toString() 方法,然后它们将用作键(假设您想出了一种提供唯一性的有意义的方法)。
    【解决方案5】:

    Javascript 对象是关联数组。 Javascript 有一个名为 Array 的对象,它具有处理其数据的特殊方法。

    【讨论】:

    • -1:对于 JS 新手来说非常糟糕的措辞。 JS 数组不是关联数组。当用作数组时,它们充当普通索引数组。当用作对象时,它们是关联的。有很多反对将它们用作对象的论点。
    猜你喜欢
    • 2018-01-24
    • 2021-04-30
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 2019-12-03
    相关资源
    最近更新 更多