【发布时间】:2019-06-28 20:42:36
【问题描述】:
在不同的阅读中有很多提到数组是 Javascript 中的一类特殊对象。例如这里:
https://www.codingame.com/playgrounds/6181/javascript-arrays---tips-tricks-and-examples
所以,由于 object 是属性(或键)和值的集合,我在想是否有一种方法可以从一个对象开始并以一个数组结束(在某种意义上,@987654327 方法@ 为模拟数组的对象返回 true)。我已经开始查看数组属性:
let arr = [0, 1, 2, 3, 4, 5];
console.log(Object.getOwnPropertyNames(arr));
console.log(Array.isArray(arr));
所以我尝试使用一个对象来模拟:
let arrEmulation = {0:0, 1:1, 2:2, 3:3, 4:4, 5:5, "length":6};
console.log(Object.getOwnPropertyNames(arrEmulation));
console.log(Array.isArray(arrEmulation));
但是Array.isArray(arrEmulation) 仍然返回false。首先,如果这是一个愚蠢的问题,我想道歉,但有什么方法可以手动将 object 转换为 array 添加特殊属性(或键)?
请注意,我不想知道如何将对象转换为数组,我只想了解哪些特殊事物可以像数组一样解释对象。 p>
【问题讨论】:
-
我不相信建议的副本解决了 OP 问题的这一部分:“我只是想了解哪些特殊的东西可以解释像数组这样的对象。” OP,也许this MIT article 可能有用。这是 MDN 自己的
isArray()documentation 中引用的那个...虽然我不确定它是否真的符合您正在寻找的细节。 -
@jmargolisvt 我不想知道如何将对象转换为数组,我想知道我需要添加到对象的属性或键是什么,以便将它们解释为数组.
-
@TylerRoper 谢谢,我会读一读...
-
查看 MDN polyfill (developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…) 也许您可以尝试让
Object.prototype.toString.call(arrEmulation)返回[object Array]。我不确定该函数的定义是什么。
标签: javascript arrays object