Javascript 学习笔记 《对象与数组 转换》

Javascript 学习笔记 Map 和 Array 转换

  • 对象 2 数组
    • 取 key 数组
    • 取 value 数组
    • 格式化后输出
  • 数组 2 对象
  • Array 2 Tree

对象 2 数组

取 key 数组

Object.keys(obj);

取 value 数组

Object.values(obj);

格式化后输出

对象:{"a":1,"b":2,"c":3}
数组:[{"name":"a","value":1}, {"name":"b","value":2}, {"name":"c","value":3}]

var obj = {"a":1, "b":2,"c":3}
var arr = Object.keys(obj).map((k) => ({'name': k, 'value': obj[k]}) );
console.info(arr);

输出

[{ "name": "a", "value": 1 },{ "name": "b", "value": 2 },{ "name": "c", "value": 3 }
]

数组 2 对象

数组:[{"name":"a","value":1}, {"name":"b","value":2}, {"name":"c","value":3}]
对象:{"a":1,"b":2,"c":3}

var arr = [{"name":"a","value":1}, {"name":"b","value":2}, {"name":"c","value":3}];
var obj = {};
arr.forEach(v => obj[v.name] = v.value);
console.info(obj);
var arr = [{"name":"a","value":1}, {"name":"b","value":2}, {"name":"c","value":3}];
var obj = arr.reduce((acc, cur) => {acc[cur.name] = cur.value; return acc;}, {});
console.info(obj);

如果对象内每个元素都是数组

var obj = arr.reduce((acc, cur) => {// 格式化单条数据var temp = {title: cur.title,url: cur.url};// 压进数组acc[cur.key] = acc[cur.key] || [];acc[cur.key].push(temp);// 返回累计器return acc;
}, {});

Array 2 Tree

function array2tree(arr, id, pid) {var id = id || "id"; // id默认叫 idvar pid = pid || "pid"; // 父id默认叫 pidvar rootId = rootId || 0; // 根id默认为 0var map = {};var root = [];var i, len;// 初始化len = arr.length;for (i = 0; i < len; i += 1) {map[arr[i][id]] = i; arr[i].children = [];}for (i = 0; i < len; i += 1) {var item = arr[i];if (item[pid] === rootId) {  root.push(item);    } else {arr[map[item[pid]]].children.push(item);}}return root;
}

使用示例:

async function getTree(id){var data = await fetch("https://law.jerry.com/system/channel/treeData").then(resp=>resp.json()).then(arr => array2tree(arr));return id ? data[id] : data;
}
(function test(){getTree().then(data => console.log(data));
})();


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部