2016-02-12 82 views
-2

怎么可以将我的数组转换:转换数组对象数组

["Collaboration", "Personal", "Services", "Financial", "Enginerring", "Infrastructure", "Application", "null"] 

对象的数组:

["title": "Collaboration", "title":"Personal", "title":"Services", "title":"Financial", "title":"Enginerring", "title":"Infrastructure", "title":"Application", "title":"null"] 

我做这样的事情:

var mainmenu = []; 
for(var i=0; menus.length > i;i++){ 
    mainmenu[i] = "{title:"+menus[i]+"}"; 
} 

但我得到了:

["{title:Collaboration}", "{title:Personal}", "{title:Services}", "{title:Financial}", "{title:Enginerring}", "{title:Infrastructure}", "{title:Application}"] 

那么怎么可能不用双引号呢?

+1

什么你看作为一个 “对象数组” 并不在JavaScript中存在。你的意思是'[{title:“Collaboration”},{...},...]'? – 2016-02-12 16:43:42

回答

4

尝试使用.map

var data = ["Collaboration", "Personal", "Services", "Financial", "Enginerring", "Infrastructure", "Application", "null"]; 
 
var result = data.map(function (title) { 
 
    return { title: title }; 
 
}) 
 

 
console.log(result);

在你的代码的问题,您正在使用String代替Object,删除"

mainmenu[i] = { title: menus[i] }; 
       ^^^ ^^ ^^  ^^^ 
1

这是因为您正在创建字符串而不是实际的对象。像这样创建对象:

mainmenu[i] = { 
    title: menus[i] 
}; 
0

ES6

var data = ["Collaboration", "Personal", "Services", "Financial","Enginerring", "Infrastructure", "Application", "null"]; 
data.map(function(title) { 
    return { 
     title: title 
    } 
}) 

ES5

for(var i = 0;i < data.length;i++) { 
    data[i] = {title: data[i]} 
} 
0

这是一个很好的例子,其中可以使用Array.from()

Array.from()方法从创建一个新的Array实例一个 数组式或可迭代的对象。

在ES6中,类语法允许用户定义的类的内置和 的子类;因此,类方静态方法(如 Array.from)通过Array的子​​类“”继承“”,并创建子类的新实例 而不是Array。

var data = ["Collaboration", "Personal", "Services", "Financial", "Enginerring", "Infrastructure", "Application", "null"]; 
 
console.log(Array.from(data, x => ({title : x})));