js 将一个二维数组 转为 一个对象

Nirvanaxumm 2018-12-19 03:45:53
如将:
var dataset = [["长沙市",100,300,400],["株洲市",150,350,500],["湘潭市",80,275,355],["衡阳市",100,379,479],["郴州市",44,44,88],["常德市",58,80,138],["益阳市",730,800,830],["娄底市",135,500,635],["邵阳市",1,23,43],["湘西土家族苗族自治州",23,50,90],["张家界市",100,103,103],["怀化市",100,300,355],["永州市",100,300,400],["岳阳市",88,90,120]];
将数组第一项转对象键值,最后转为:
var dataset = {"长沙市":{100,300,400},"株洲市":{150,350,500},"湘潭市":{80,275,355},"衡阳市":{100,379,479},"郴州市":{44,44,88},"常德市",{58,80,138},"益阳市":{730,800,830},"娄底市":{135,500,635},"邵阳市":{1,23,43},"湘西土家族苗族自治州":{23,50,90},"张家界市":{100,103,103},"怀化市":{100,300,355},"永州市":{100,300,400},"岳阳市":{88,90,120}};

有点怪:)
...全文
912 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2018-12-21
  • 打赏
  • 举报
回复
还有一种方法,用正则表达式把花中括号换成大括号,在进行一个格式转换,存成文本,在用evel函数调用
Nirvanaxumm 2018-12-19
  • 打赏
  • 举报
回复
引用 1 楼 讨厌走开啦 的回复:
let translate = (data) => {
    let re = {};
    data.forEach(function (item) {
        re[item[0]] = item.slice(1);
    });
    return re;
}
大概是这么个思路,没测过,要用的话测试一下。
可以不用ES6帮我实现下吗?我不是程序员,套下这个格式有用。呵呵。
天际的海浪 2018-12-19
  • 打赏
  • 举报
回复
var dataset = [["长沙市",100,300,400],["株洲市",150,350,500],["湘潭市",80,275,355],["衡阳市",100,379,479],["郴州市",44,44,88],["常德市",58,80,138],["益阳市",730,800,830],["娄底市",135,500,635],["邵阳市",1,23,43],["湘西土家族苗族自治州",23,50,90],["张家界市",100,103,103],["怀化市",100,300,355],["永州市",100,300,400],["岳阳市",88,90,120]];
var obj = {};
dataset.forEach(function(v){
	var t = {};
	for (var i = 1; i < v.length; i++)
		t[i] = v[i];
	obj[v[0]] = t;
});
alert(JSON.stringify(obj));
Nirvanaxumm 2018-12-19
  • 打赏
  • 举报
回复
错了,是转成: var dataset = {"长沙市":{1:100,2:300,3:400},"株洲市":{1:150,2:350,3:500},"湘潭市":{1:80,2:275,3:355},"衡阳市":{1:100,2:379,3:479},"郴州市":{1:44,2:44,3:88},"常德市":{1:58,2:80,3:138},"益阳市":{1:730,2:800,3:830},"娄底市":{1:135,2:500,3:635},"邵阳市":{1:1,2:23,3:43},"湘西土家族苗族自治州":{1:23,2:50,3:90},"张家界市":{1:100,2:103,3:103},"怀化市":{1:100,2:300,3:355},"永州市":{1:100,2:300,3:400},"岳阳市":{1:88,2:90,3:120}};
讨厌走开啦 2018-12-19
  • 打赏
  • 举报
回复
补充一下,返回的对象是{"长沙市":[100,300,400]}这样的,没有{100,300,400}这样的对象。
讨厌走开啦 2018-12-19
  • 打赏
  • 举报
回复
let translate = (data) => {
    let re = {};
    data.forEach(function (item) {
        re[item[0]] = item.slice(1);
    });
    return re;
}
大概是这么个思路,没测过,要用的话测试一下。

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧