网站搜索

在 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 获取有关它的文档。