对象 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默认叫 id
var pid = pid || "pid"; // 父id默认叫 pid
var rootId = rootId || 0; // 根id默认为 0
var 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));
})();
本文暂时没有评论,来添加一个吧(●'◡'●)