2017-03-16 63 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);

相关问题