Javascript 使对象成为数组

Javascript 使对象成为数组,javascript,arrays,Javascript,Arrays,是否可以将JavaScript对象变成数组?也就是说,在保留其现有属性的同时,在长度、推送、forEach等方面开始像数组一样工作?我有一个模糊的想法,那就是通过重新分配原型可能实现这一点,但一些尝试通过反复试验并没有产生任何结果。不,你不能。虽然理论上可以(通过)重新分配原型,但它不会更改其内部[[Class]]]并获得magic.length属性 相反,尝试将对象的所有属性复制到一个新数组上。我不确定您为什么要这样做,除了访问.length、.push()和forEach,如您所述。据我所知

是否可以将JavaScript对象变成数组?也就是说,在保留其现有属性的同时,在
长度
推送
forEach
等方面开始像数组一样工作?我有一个模糊的想法,那就是通过重新分配原型可能实现这一点,但一些尝试通过反复试验并没有产生任何结果。

不,你不能。虽然理论上可以(通过)重新分配原型,但它不会更改其内部
[[Class]]]
并获得magic
.length
属性


相反,尝试将对象的所有属性复制到一个新数组上。

我不确定您为什么要这样做,除了访问
.length
.push()
forEach
,如您所述。据我所知,您无法强制这些属性/函数在对象上工作,但您肯定可以绕过它们:

.length
(从):

.push()

forEach的:

for(key in obj){
  var value;
  if(obj.hasOwnProperty(key)){
     value = obj[key]; //you now have access to the key and the value in each iteration of obj
  }
}

一个二维数组?JQuery向您展示了这样做是多么的奇怪。你想要它做什么?你可以很简单地从一个类似数组的对象构建一个数组,但是将一个非类似数组的对象转换成一个数组呢?用谷歌搜索“javascript将对象转换为数组”会得到很多结果,最重要的是。是的,我想最好的办法是通过jquery的
映射
或其他方法来运行对象,将每个值推送到一个数组中
obj.key = value; //there isn't a much shorter way to add something to an object since you have to specify a key and a value
for(key in obj){
  var value;
  if(obj.hasOwnProperty(key)){
     value = obj[key]; //you now have access to the key and the value in each iteration of obj
  }
}