2017-03-16 68 views
0

我需要編寫一個函數,它接收一個對象並返回一個包含此對象屬性值的數組。從Object到Object中的數組

例:

var obj = { 
    name: "Joao", 
    age: 27, 
    country: "USA" 
}; 

函數應該返回數組是這樣的:

var array = ["John", 27, "USA"]; 

我不能使用Object.values()。

這是我最後一次嘗試看起來像:

function returnValues(obj) { 
    for (var key in obj) { 
    return obj[key]; 
} 

它不會返回與值的數組。誰能幫我?

+0

'我不能用Object.values()'是的,你可以 - https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Object/values#Polyfill –

回答

2

將它添加到一個數組,然後返回數組

function returnValues(obj) { 
    var arr = []; 
    for (var key in obj) 
     arr.push(obj[key]); 
    return arr; 
} 
3

您可以使用Object.keys和迭代,要返回的值:

function returnValues(obj) { 
    return Object.keys(obj).map(function(key) { 
     return obj[key]; 
    }); 
} 

,也可以使用創建一個臨時數組您現有的解決方案:

function returnValues(obj) { 
    var temp = []; 
    for (var key in obj) { 
     temp.push(obj[key]); 
    } 
    return temp; 
} 

有了ES6支持,您可以sh奧騰於:

const returnValues = (o) => Object.keys(o).map(k => o[k]); 

或者使用Object.entries

Object.entries(obj).map(([,v]) => v) 

或者作爲@ibrahim mahrir指出,如果你有ES2017支持,你可以使用Object.values

console.log(Object.values(obj)); 
+1

Thanks @ibrahimmahrir。添加所有解決方案! :P –

+0

@ibrahimmahrir我希望我可以捐出我收到的這個答案給你的upvote:P - 更新 –

+0

我很高興幫助! –

2

你可以嘗試使用地圖:

var obj = { 
 
    name: "Joao", 
 
    age: 27, 
 
    country: "USA" 
 
}; 
 

 
var array = Object.keys(obj).map(item => obj[item]); 
 

 
console.log(array);

0

您還可以使用Object.entries()。 。

var obj = {name: "Joao", age: 27, country: "USA"}, 
 
    elems = Object.entries(obj).map(v => v[1]); 
 

 
    console.log(elems);

相關問題