数组转换为对象

我有一个数组 如[1, 2, ,3, 4,......]长度不确定
需要转换成对象成 {a:1, b:2, c:3, d: 4,.....},
请问大佬们怎么解决

阅读 2.6k
5 个回答

长度不确定,只能遍历吧。但你长度不确定,比如超过26,key已经用完26个小写字母,接下来用什么?

如果能确定小于26,倒是可以直接charcode来++

let arr = [1,2,3,4,5];
let code = 'a'.charCodeAt();
let narr = {};
for(let v of arr){
    let k = String.fromCharCode(code++);
    narr[k] = v;
}
console.log(narr);

var arr = [1, 2, 3, 4, ……];
var arrString = ['a', 'b', 'c', 'd', ……];//与上面个数相同
var obj = {};
for(i in arr){
    obj[arrString[i]] = arr[i];
}
var rtn = {};
[ 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4 ].forEach( ( val, idx ) => {
    rtn[ Array( ~~( idx / 26 ) + 2 ).join( String.fromCharCode( 97 + idx % 26 ) ) ] = val;
} )

简单的处理下key重复的问题

新手上路,请多包涵

var arr = [1, 2, 3, 4, ……];
var res = [];
for(var i in arr) {

res['a'+i] = arr[i];

}
return res;

还是不用要用'a'吧, 生成key值也麻烦, 用map, 索引做key

var newArr = [1,2,3].map(function(v, idx){
    var obj = {};
    obj[idx] = v;
    return obj;
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题