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

时间:2017-07-31 08:46:14

标签: javascript arrays object ecmascript-6 keyvaluepair

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

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

只有这样的值的数组:

['John', 'Tim', 'Matt']

我如何做到这一点?

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

const arr = /* ??? */;

5 个答案:

答案 0 :(得分:6)

您可以使用Object.values

  

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

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

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

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

答案 1 :(得分:2)

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

const arr = [];
for(let key in obj){
  arr.push(obj[key]);
}

答案 2 :(得分:2)

您可以使用Object.values命令。

根据 docs

  

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

虽然它是ES2017解决方案,但由于您使用的是反应,因此您可以将stage-0作为预设babel并访问此功能



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

var newdata = Object.values(data);
console.log(newdata);




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

答案 3 :(得分:0)

虽然您有数字键并且顺序没有间隙,但您可以使用Object.assign将数组作为目标,将给定对象作为源。

var object = { 0: 'John', 1: 'Tim', 2: 'Matt' }, 
    array = Object.assign([], object);
    
console.log(array);

答案 4 :(得分:0)

这是常用的一种:

const obj={
           1:'Azamat',
           2: 'Kanybek',
           3: 'Manas'}

console.log(Object.values(obj))

对于键,值对:

const arr = [];

for(let key in obj){
  arr.push([key,obj[key]])
  
}
console.log(arr)