【问题标题】:Is Object and Array in Javascript the same thing? [duplicate]Javascript中的对象和数组是一回事吗? [复制]
【发布时间】:2020-07-26 14:44:38
【问题描述】:

我正在寻找一种优雅的方式来理解 JavaScript 数组和对象。

我遇到了一个异常,我陷入了困境。 由于在 PHP 或其他语言中,当我们创建一个数组时,例如

 $a = [
    admin => 1,
    staff => 2
 ];

所以如果我们想访问它的元素,我们可以通过例如$a[admin] 来访问它,我们会得到 1。

类似地,如果它是一个对象,例如

 $a = (object) [];
 $a->sadd = 'sas';

我们可以用箭头访问它

 $a->sadd

如果我们尝试以数组样式访问对象元素,即像这样 $a['sadd'] 它将抛出错误,即您不能将其用作数组样式。

但我对 JavaScript 中的异常感到惊讶。

我观察到,在 JavaScript 中,无论我在做什么,数组或对象,两者的元素都可以通过点或数组样式访问,我发现访问样式没有区别。

例如

var a = {sadd : 1}

我可以通过a['sadd']a.sadd 访问它的元素,两者都会给出1

所以我对这个异常感到困惑,想知道数组和对象这两种数据类型在 JavaScript 中是否被认为是相同的?

【问题讨论】:

  • 不,它们显然不一样。他们只是使用类似的语法来访问他们的元素。
  • 这正是 js 的工作原理。当属性名称 var a = {123 : 1, 'a b c': '2', 'a-b-c': ''}a.1a.a b ca.a-b-c 显然不起作用时,这是天赐之物
  • 嗨,萨达姆,对象和数组在所有技术堆栈中的工作方式都是一样的。您应该检查面向对象的编程原理和其他内容。或者最好是在线学习 Javascript 课程。这将帮助您很好地理解 Javascript。在这里问这样的问题会吸引更多的反对票。 (PS:我没有投反对票:))
  • @Jimmy 我认为你错了对象和数组在所有技术中的工作方式都不相同,我还为你提供了示例,在 php 中你不能访问具有相同样式的数组元素。跨度>
  • @saddamkamal 请检查https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array 它几乎没有您正在寻找的想法,

标签: javascript php


【解决方案1】:

数组确实是一个对象。

Javascript 是一种动态语言,并接受混合类型的实体。同样在访问时,点符号似乎更清晰(至少 imo)并且是首选。括号表示法用于动态键。

数组和对象之间的区别归结为它们的用例: 数组 -> 连续的内存块 对象 -> 键值对(如字典)

【讨论】:

    【解决方案2】:

    您的 php 示例实际上是在创建我们在 JS 中称为对象的对象,而不是数组。在JS中,数组是一个item的列表,可以通过array[i]或者循环查找。

    对象是字段的集合,您可以通过object.fieldNameobject[fieldName] 进入。

    这在 JS 中可能会让人感到困惑,因为理论上一切都是“对象”,包括数组,这是因为事情的处理方式较低..

    我建议您跟随 https://justjavascript.com/ 课程学习关于对象如何在 JS 中工作的良好心智模型。

    【讨论】:

    • 第一个语句有点误导,因为 php.ini 中有关联数组。 javascript中相同的结构不是数组
    猜你喜欢
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2015-04-13
    相关资源
    最近更新 更多