使用循环将给定数组转换为对象数组

问题描述 投票:-2回答:4

我的任务是使用循环将数组转换为对象。

arr = ['a', 'b', 'c', 'd', 'e']; 

到对象数组

arr = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5};

我得到了正确的结果,但是我不确定我完成此任务的方式。请给我一些建议。

let arr = ['a', 'b', 'c', 'd', 'e'];
let obj = {};
for (let i = 0; i < arr.length; i++) {
  obj[arr[i]] = i + 1
}

console.log(obj)

正如我之前提到的,结果是正确的

{ a: 1, b: 2, c: 3, d: 4, e: 5 }

但是我倾向于觉得有更好的解决方案。

javascript arrays object
4个回答
0
投票

一个选项是将arr转换为条目数组,使用索引指定值,然后使用Object.fromEntries将其转换为对象:

let arr = ['a', 'b', 'c', 'd', 'e'];
const obj = Object.fromEntries(
  arr.map((prop, i) => [prop, i + 1])
);
console.log(obj);

(尽管Object.fromEntries是一个相对较新的方法)


0
投票

您可以使用while语句并仅将i递增一次。

var array = ['a', 'b', 'c', 'd', 'e'];
    object = {},
    i = 0;

while (i < array.length) object[array[i]] = ++i;

console.log(object);

0
投票

您可以如下使用Array.prototype.reduce

let arr = ['a', 'b', 'c', 'd', 'e'],
  obj = {};
arr.reduce((acc, a, i) => (acc[a] = i + 1, acc), obj);
console.log(obj);

0
投票

这仅需要一行就可以帮助

const obj = Object.assign({}, ['a', 'b', 'c']);

console.log(obj)

将产生

 { 0: "a", 1: "b", 2: "c" }
© www.soinside.com 2019 - 2024. All rights reserved.