2017-07-31 36 views
0

我正在開發一個應用程序做出反應,我需要一個key-value對象轉換是這樣的:如何將鍵 - 值對對象轉換爲ES6中的值數組?

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

要只值的數組是這樣的:

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

如何實現這個?

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

const arr = /* ??? */; 
+3

的[轉換一個JS對象數組]可能的複製( https://stackoverflow.com/questions/6857468/converting-a-js-object-to-an-array) –

+0

https://stackoverflow.com/a/26166303/1896903這可能會幫助你得到你的答案。 – vikas

回答

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]對數組,它也可能對你有用

+0

偉大的解決方案,但它是ES2017的功能,不受舊版瀏覽器的支持。 –

+1

@ D.Simon你是對的,但是由於OP使用了反應,他可以使用stage-0預置來使用它 –

+0

@ D.Simon所以是'const'。至於對象方法,還有polyfills! – estus

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

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

你可以使用Object.values

Object.values()方法返回給定對象的自己的可枚舉的屬性值的數組,以相同的順序作爲由for...in環路(不同之處在於一個用於-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

'Object.values'不包含在ES6中,隨ES7一起提供。他想要ES6中的東西。 –

相關問題