如何将键值对对象转换为ES6中的值数组?

Bar*_*yle 2 javascript arrays object keyvaluepair ecmascript-6

我正在开发一个React应用程序,我需要转换这样的键值对象:

{
  0: 'John',
  1: 'Tim',
  2: 'Matt'
};
Run Code Online (Sandbox Code Playgroud)

对于像这样的值的数组:

['John', 'Tim', 'Matt']
Run Code Online (Sandbox Code Playgroud)

我该如何做到这一点?

const obj = {
  0: 'John',
  1: 'Tim',
  2: 'Matt'
};

const arr = /* ??? */;
Run Code Online (Sandbox Code Playgroud)

Shu*_*tri 8

您可以使用Object.values命令。

根据文档

Object.values()返回一个数组,其元素是在对象上找到的可枚举属性值。属性的顺序与通过手动循环对象的属性值给出的顺序相同

虽然这是一个ES2017解决方案,但由于您使用的是 react,您可以将其stage-0作为预设包含babel并访问此功能

var data ={
  0: 'John',
  1: 'Tim',
  2: 'Matt'
};

var newdata = Object.values(data);
console.log(newdata);
Run Code Online (Sandbox Code Playgroud)

还有其他方法,例如Object.keys将所有键作为数组提供,Object.entries方法返回给定对象自己的可枚举属性[key, value]对的数组,这也可能对您有用


Nin*_*olz 7

你可以用Object.values.

Object.values()方法返回给定对象自己的可枚举属性值的数组,其顺序与for...in循环提供的顺序相同(不同之处在于for-in循环也枚举原型链中的属性).

var object = { 0: 'John', 1: 'Tim', 2: 'Matt' }, 
    array = Object.values(object);
    
console.log(array);
Run Code Online (Sandbox Code Playgroud)

使用ES6,您可以使用Array.from并使用值的回调.

var object = { 0: 'John', 1: 'Tim', 2: 'Matt' }, 
    array = Array.from(Object.keys(object), k => object[k]);
    
console.log(array);
Run Code Online (Sandbox Code Playgroud)