Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将数组转换为对象_Javascript_Arrays_Object - Fatal编程技术网

Javascript 如何将数组转换为对象

Javascript 如何将数组转换为对象,javascript,arrays,object,Javascript,Arrays,Object,我想谈谈这个问题: let myArray = [ {city: "NY"}, {status: 'full'} ]; 为此: let myObj = { city: "NY", status: 'full' }; 当我试着这样做时: let newObj = {}; for (var i = 0; i < myArray.length; i++) { (function(x) { newObj = Object.assign(myArray[i]); })(i); }

我想谈谈这个问题:

let myArray = [ {city: "NY"}, {status: 'full'} ];
为此:

let myObj = { city: "NY", status: 'full' };
当我试着这样做时:

let newObj = {};
for (var i = 0; i < myArray.length; i++) {
  (function(x) {
    newObj = Object.assign(myArray[i]);
  })(i);
}
让newObj={};
对于(var i=0;i
它将最后一对分配给数组中的对象

constmyarray=[{city:NY},{status:'full'}];
const myObj=Object.assign({},…myArray);

console.log(myObj)我倾向于同意您的问题似乎是关于创建一个索引对象,这通常不是一个好的计划,但如果有必要为对象设置数字键,您可以这样做:

let newObj = {};
myArray.forEach((val, index) => { newObj[index] = val });

根据caniuse.com,IE中支持此语法。您还可以使用
Array.reduce()
,这将为您提供更精细的控制:

const myArray=[
{城市:'NY',颜色:'blue',啮齿动物:{小:假,中:假,大:真},
{状态:'满',颜色:'红'},
{三明治:'风味'},
]
//项是数组中的每个对象
const reduced=myArray.reduce((newObj,item)=>{
//现有道具将被数组中较新的对象项覆盖
//此示例与Object.assign spread相同,具有从右到左的优先级,
//直到你想要更多的自定义逻辑
Object.keys(item.forEach((key)=>{newObj[key]=item[key]})
返回newObj
}, {})
console.log(简化)

//您将看到“红色”覆盖“蓝色”
您请求的对象无效;你不能有
{{city:'NY'}}
是的,这就是我的意思。这是一个错误值得注意的是,IE 11中没有spread运算符。对spread语法进行修改并使用
Object.assign
,这在IE11中是不可用的。@NinaScholz-没错。我高估了IE11:)是的,这就是我的意思。这是一个错误,没有任何上下文的一团代码不是最好的答案。请考虑扩大这一点。即使从问题的上下文来看,也不清楚“IE支持”是什么意思。
map
不使用结果,只是迭代数组是一种不好的模式。您可以使用
forEach
let myArray = [ {city: "NY"}, {status: 'full'} ];

let newObj = myArray.reduce((acc, curr) => {
    Object.keys(curr).forEach(val => {
    acc[val] = curr[val]
  })
  return acc
}, {})

console.log(newObj)