我有一个数组 如[1, 2, ,3, 4,......]长度不确定
需要转换成对象成 {a:1, b:2, c:3, d: 4,.....},
请问大佬们怎么解决
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;
});
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
长度不确定,只能遍历吧。但你长度不确定,比如超过26,key已经用完26个小写字母,接下来用什么?
如果能确定小于26,倒是可以直接charcode来++