在 JavaScript 中将数组转换为对象
我正在尝试将一个数组转换为一个 JavaScript 对象,该对象旨在与 AngularJS 中的输入复选框一起使用。
这是我从后端得到的输入数组:
let selectedRolesDB = ['ADMIN', 'SECURITY'];
这是我的前端所期望的:
let selectedRoles =
{
'ADMIN' : true,
'SECURITY': true
};
我尝试了不同的方法,比如 angular.forEach,但问题是我无法得到期望的输出:
angular.forEach(selectedRolesDB,(value, key) => {
this.selectedRoles.push({value : true });
});
有人能告诉我怎样最好地解决我的问题,以便我得到前端所期望的数组吗?
JSFiddle
答案#1
selectedRoles 不是数组,它是对象。将其初始化为空对象:
let selectedRoles = {};
angular.forEach(selectedRolesDB,(value, key) => {
// use [] notation to add property with required name and value
selectedRoles[value] = true;
});
答案#2
使用 array.reduce :
let selectedRolesDB = ['ADMIN', 'SECURITY'];
const newArray = selectedRolesDB.reduce((accumulator, value) => {
accumulator[value] = true;
return accumulator;
}, {});
console.log(newArray)请参阅 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce 获取有关它的文档。
