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)