将Array转换为Object +设置属性名称

时间:2016-07-13 10:59:43

标签: javascript arrays

我有一个具有可变属性名称的对象,我将其转换为数组:

var test = Object.getOwnPropertyNames(obj); //[a, b, c]

现在我有了我的属性名称数组。 我要采取的下一步是将此数组转换为如下对象数组:

newObj= [ { "name": a }, {"name": b} , {"name" : c }]

我怎样才能做到这一点?

3 个答案:

答案 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 }; });