我有一个具有可变属性名称的对象,我将其转换为数组:
var test = Object.getOwnPropertyNames(obj); //[a, b, c]
现在我有了我的属性名称数组。 我要采取的下一步是将此数组转换为如下对象数组:
newObj= [ { "name": a }, {"name": b} , {"name" : c }]
我怎样才能做到这一点?
答案 0 :(得分:2)
您可以利用Array.prototype.map
- 它通过对每个项目应用一个函数将序列转换为一个新数组,该函数将包装到您的案例中具有name
属性的对象:
var names = ["a", "b", "c"];
var newObj = names.map(function(n) { return { name: n }; });
console.log(newObj);

结合您的getOwnPropertyNames
用法,它可能如下所示:
var newObj = Object.getOwnPropertyNames(obj).map(function(n) { return { name: n }; });
答案 1 :(得分:1)
试试这个(使用Object.getOwnPropertyNames
本身)
var obj = { a :1, b:2, c:3 };
var output = Object.getOwnPropertyNames(obj).map( function( key ){
return { "name" : obj[ key ] } ;
});
console.log(output);

答案 2 :(得分:1)
没有getOwnPropertyNames
函数的简单方法(使用Object.keys
函数):
// obj is your initial object
var newArr = Object.keys(obj).map(function(k) { return { name: k }; });