我的任务是使用循环将数组转换为对象。
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 }
但是我倾向于觉得有更好的解决方案。
一个选项是将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
是一个相对较新的方法)
您可以使用while
语句并仅将i
递增一次。
var array = ['a', 'b', 'c', 'd', 'e'];
object = {},
i = 0;
while (i < array.length) object[array[i]] = ++i;
console.log(object);
您可以如下使用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);
这仅需要一行就可以帮助
const obj = Object.assign({}, ['a', 'b', 'c']);
console.log(obj)
将产生
{ 0: "a", 1: "b", 2: "c" }