如何从javascript中的现有数组创建对象数组?

如何从javascript中的现有数组创建对象数组?,javascript,arrays,object,javascript-objects,Javascript,Arrays,Object,Javascript Objects,我有一个数组,其元素为字符串格式,如下所示: somearray = ["abc", "pqr", "xyz"] 我需要从这个数组中创建一个对象,其变量我声明为var newobject={}。我试过这个: var newobject = {}; var index = 0; somearray.forEach(function() { newobj = { name : somearray[index] }; index++; }); 这会创建一个对

我有一个数组,其元素为字符串格式,如下所示:

somearray = ["abc", "pqr", "xyz"]
我需要从这个数组中创建一个对象,其变量我声明为
var newobject={}
。我试过这个:

var newobject = {};
var index = 0;
somearray.forEach(function() {
    newobj = {
        name : somearray[index]
    };
    index++;
});
这会创建一个对象,但只包含数组中的最后一个字符串(
somearray

如果代替

newobj = {
    name : somearray[index]
};
我写

newobj[index] = {
    name : somearray[index]
};
对象的名称为0,1,2。我不希望这种情况发生,也不希望有其他事情发生。
难道没有任何方法像我们对数组使用push方法一样吗?

只需使用键值表示法:

var newobject={};
var somearray=[“abc”、“pqr”、“xyz”];
forEach(函数(x,i){
newobject[i]=x;
})

console.log(newobject)
使用
Array.forEach
Array.push的简单解决方案功能:

var somearray = ["abc", "pqr", "xyz"], objects = [];

somearray.forEach((v) => objects.push({name: v}) );    
console.log(JSON.stringify(objects, 0, 4));
或者使用
Array.map
函数执行相同操作:

var somearray = ["abc", "pqr", "xyz"], objects;  
objects = somearray.map((v) => ({name: v}) );
输出:

[
    {
        "name": "abc"
    },
    {
        "name": "pqr"
    },
    {
        "name": "xyz"
    }
]

你到底想达到什么目的?一个对象的每个值都有一个键。您希望对象的键和值是什么?请告诉我们预期的结果应该是什么样子(作为JSON)预期的输出是[object,object,object],其中每个对象是{name:“abc/pqr/xyz”}
var result=somearray.map(函数(str,i){return name:str}}
为什么使用
.map()
?您只是丢弃了未定义的
的结果数组。
.forEach()
.reduce()
都更有意义。@斜视您是否非常担心抛出的数组?我使用它是因为它比较短……是的,它可以像
newObj=somearray.reduce((p,c,I)=>(p[I]=c,p),{})那样完成@nicael:你很担心还有4个字符吗?故意构造、填充和丢弃一个数组而不使用它是一件非常奇怪的事情。@nicael当然这会影响性能,你创建一个数组,然后无缘无故地扔掉它。你不是免费得到的。