JavaScript,将对象转换为数组

Šim*_*das 25 javascript jquery

我有一个对象:

var obj = {
    "Mike": 24,
    "Peter": 23,
    "Simon": 33,
    "Tom": 12,
    "Frank": 31
};
Run Code Online (Sandbox Code Playgroud)

我想创建一个包含对象值的数组.密钥(密钥名称)可以忽略不计:

[24, 23, 33, 12, 31]
Run Code Online (Sandbox Code Playgroud)

值的顺序并不重要!

一个解决方案(显然)将有一个函数,它接受值并将它们放入一个数组:

var arr = valuesToArray(obj); 
Run Code Online (Sandbox Code Playgroud)

我会接受这样的功能作为答案.但是,如果有一个能够做到这一点的API函数(ECMAScript,jQuery,特定于浏览器......),我会更高兴.有这样的事吗?

CMS*_*CMS 33

显而易见的方法是执行for-in循环,正如@quixoto建议的那样,但仅仅是为了记录,并且由于您正在寻找内置方式,您可以配对新的ECMAScript 5方法Object.keysArray.prototype.map,适用于最新浏览器:

function valuesToArray(obj) {
  return Object.keys(obj).map(function (key) { return obj[key]; });
}
Run Code Online (Sandbox Code Playgroud)

  • 甚至在ES6中更短:`Object.keys(obj).map(key => obj [key])` (2认同)

小智 16

使用Object.values它将返回数组.

Object.values(obj) // [24, 23, 33, 12, 31]
Run Code Online (Sandbox Code Playgroud)


Mal*_*rer 6

使用jQuery,您可以使用每个函数:

var obj = {
    "Mike": 24,
    "Peter": 23,
    "Simon": 33,
    "Tom": 12,
    "Frank": 31
}

myArray=new Array();
$.each(obj, function(key, value) { 
  myArray.push(value);
});
Run Code Online (Sandbox Code Playgroud)


Ben*_*tto 5

在任何地方都没有内置的方法可以做到这一点.以下是您的建议,可以根据您的库"缩短"为更聪明的功能编程版本,但它们都具有相同的效率.

function valuesToArray(obj) {
    var result = [];
    for (var key in obj) {
       if (obj.hasOwnProperty(key)) {
           result.push(obj[key]);
       }
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)