js 如何把数组按照一定格式处理成嵌套型的对象

[{parent:'1',son:'1'},{parent:'1',son:'2'},{parent:'2',son:'1'}{parent:'2',son:'2'}]转... [
{parent:'1',son:'1'},
{parent:'1',son:'2'},
{parent:'2',son:'1'}
{parent:'2',son:'2'}
] 转化成
[
{
parent:'1',
[
{son:'1'},
{son:'2'}
]
},
{
parent:'2',
[
{son:'1'},
{son:'2'}
]
}
]
展开
 我来答
匿名用户
2018-07-18
展开全部
var arr = [
{ parent: '1', son: '1' },
{ parent: '1', son: '2' },
{ parent: '2', son: '1' },
{ parent: '2', son: '3' }
]
var arr_data = [];//最终结果
var index_arr = [];//记录parent的序号
var str_parent = "";//记录每次循环时parent的值
for (var i = 0; i < arr.length; i++) {
str_parent = arr[i]["parent"];//确定是否为1
//判断在记录中是否存在
if(index_arr.indexOf(str_parent)==-1){
var arr_obj = {};//大的对象中需要包括parent和son
var son_arr = [];//son对应的数组
var son_obj = {};//son对应数组中的小对象
index_arr.push(str_parent);//默认记录中不存在时,添加进去
arr_obj["parent"]= str_parent;//往大对象中填充parent
son_obj["son"]=arr[i]["son"];//编写小对象
son_arr.push(son_obj);//填充到son数组中
arr_obj["son"]= son_arr;//往大对象中填充son
arr_data.push(arr_obj);//将大对象push到最终
}else{
//如果在记录中存在,则代表在最终数据中已存在此大对象了,只需要往里面填充对应的son数组中的小对象即可
//按照规律,可以看出,index_arr所对应的下标也对应arr_data最终的结果下标
var xiabiao = index_arr.indexOf(str_parent);
arr_data[xiabiao]["son"].push({"son":arr[i]["son"]});
}
}
console.log(arr_data)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-07-16
展开全部
例:
let data = [
{parent:'1',son:'1'},
{parent:'1',son:'2'},
{parent:'2',son:'1'},
{parent:'2',son:'2'}
]
const classify = (data) => {
let list = [];
data.map(ele => {
if (list.length <= 0) {
list.push({
parent: ele.parent,
childrens: [{son: ele.son}]
})
return
}
let child = list.find(item => {
return item.parent ==ele.parent
})
if (child) {
child.childrens.push({son: ele.son})
} else {
list.push({
parent: ele.parent,
childrens: [{son: ele.son}]
})
}
})
return list
}
console.log(classify (data));
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式