如何从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当然这会影响性能,你创建一个数组,然后无缘无故地扔掉它。你不是免费得到的。