javascript - 在 JavaScript 中按对象创建数组(反之亦然)?

标签 javascript

这是怎么回事?

var x = {length:3, '0':'foo', '1':'bar','2':'f', splice:function(){}}

这实际上创建了一个数组:

["foo", "bar", "f"]

此结构语法的文档在哪里?

它也很聪明:

更改为:(注意 0、1、3)

 var x = {length:3, '0':'foo', '1':'bar','3':'f', splice:function(){}}

会弄乱数组,它会是:

["foo", "bar", undefined × 1]

此外,删除拼接功能:

var x = {length:3, '0':'foo', '1':'bar','2':'f'}

产量:(常规对象)

Object
0: "foo"
1: "bar"
2: "f"
length: 3
__proto__: Object

所以我有两个问题:

  • 这个结构是什么? 长度,元素,拼接

  • 假设我有 ['john','paul','yoko'] 现在我想创建对象

    var x = {length:3, '0':'john', '1':'paul','2':'yoko', splice:function(){}}

    我该怎么做?

最佳答案

数组只不过是一个对象,实现了一些方法,当你制作console.log(x)时,你的控制台会识别数组的模型,并按照配置显示它。

ArrayJavascript 中默认可用的对象,浏览器对它的处理方式与其他对象略有不同(请参阅@MathiasSchwarz 评论),但在其结构,它是一个像其他对象一样的对象(有一些方法可以调用,你可以添加索引。虽然,你通常不会像在“普通”对象中那样使用字符串索引,因为它的目的不是那样使用) .

但是你的对象并不是真正的数组,你可以做任何你想做的事而不用引用控制台中显示的内容。

关于javascript - 在 JavaScript 中按对象创建数组(反之亦然)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13119105/

相关文章:

javascript - 使用对象原型(prototype)作为默认值有多好?

javascript - 删除按钮仅适用于最后一项

JavaScript 在不透明度转换完成之前更改图像

javascript - 在用户第一次访问时强制 Service Worker 更新,而不是用户第二次访问

javascript - 在 JavaScript 中将带有查询参数的 URL 作为函数参数传递

javascript - 根据浏览器类型调整文本框大小

javascript - Aurelia JS - 迭代子元素(kendo UI)?

javascript - 随机图像顺序幻灯片

php - 通过 php 页面中的 url 从 javascript 发送数组但是

javascript - React HTML选择元素onChange函数,尝试访问 'event.target.value'