如何从一维数组和静态字符串创建对象



我想要一个像这样的对象

var obj = {
"ABC" : { name: true, dob: true},
"CDE" : { name: true, dob: true},
"EFG" : { name: true, dob: true},
"CBA" : { name: true, dob: true},
"XYZ" : { name: true, dob: true},
}

目前我只有数组

var arr = ["ABC","CDE","EFG","CBA","XYZ"];

我试过添加这个

newArray.push({
key: arr[i],
name: true,
dob: true
});
var newObj = {}
newObj[i] = newArray;

但我无法将其作为一个整体对象传递给我的代码。 当我字符串化它时,它返回

输出

{
'0':"[{
key: "ABC",
name: true,
dob: true
},{
key: "CDE",
name: true,
dob: true
}]"
}

您可以使用Object.assign来创建对象。使用扩展运算符和map来重申数组。

var arr = ["ABC", "CDE", "EFG", "CBA", "XYZ"];
var obj = Object.assign(...arr.map(o => ({[o]: {name: true,dob: true}})));
console.log(obj);

另一种选择是使用reduce将数组转换为有效对象。

var arr = ["ABC", "CDE", "EFG", "CBA", "XYZ"];
var obj = arr.reduce((c, v) => Object.assign(c, {[v]: {name: true,dob: true}}), {});
console.log(obj);

使用 Array.reduce

var arr = ["ABC","CDE","EFG","CBA","XYZ"];
var result = arr.reduce((a,c) => {
a[c] = {name: true, dob: true};
return a;
}, {});
console.log(result);

var arr = ["ABC","CDE","EFG","CBA","XYZ"];
let obj = {};
arr.forEach(x=> {
obj[x] = {
name: true,
dob: true
}  
});
console.log(obj)

循环遍历数组,对于每个元素,将其用作键并添加一个对象作为值

这是使用 JSON.parse(( 生成输出对象的另一种方法

var objStr = '{'
var arr = ["ABC", "CDE", "EFG", "CBA", "XYZ"], 
propertyValue = ':{"name":true,"dob":true}'
		for (var x in arr) {
			if (x < arr.length - 1)
				objStr += '"' + arr[x] + '"' + propertyValue + ','
			else
				objStr += '"' + arr[x] + '"' + propertyValue
		}
		objStr += '}'
		
console.log(JSON.parse(objStr))

希望这对您:)有所帮助

最新更新