解解对象结构
dessolve Object structure
我从我的 REST-API 中获取一个对象,如下所示
var obj = {
array1: [
{
"elm": 1, children: [
{
"elm": 2, children: [
{
"elm": 3, children: [
{
"elm": 4, children: [
{"elm": 5}
]
}
]
}
]
}
]
}
],
array2: [
{
"elm": 6, children: [
{
"elm": 7, children: [
{
"elm": 8, children: [
{
"elm": 9, children: [
{"elm": 10}
]
}
]
}
]
}
]
}
]
};
由于更改了接口并且无法访问 api 及其结构构建,我必须将对象解为如下所示的内容:
var newObj = {
array1: [
{
"elm": 1, children: [
{"elm": 2},
{"elm": 3},
{"elm": 4},
{"elm": 5}
]
}
],
array2: [
{
"elm": 6, children: [
{"elm": 7},
{"elm": 8},
{"elm": 9},
{"elm": 10}
]
}
]
};
有没有更简单的方法可以解散物体,而不会循环穿过每个孩子?
也许这对你有用...
var obj = { array1: [{ "elm": 1, children: [{ "elm": 2, children: [{ "elm": 3, children: [{ "elm": 4, children: [{ "elm": 5 }] }] }] }] }], array2: [{ "elm": 6, children: [{ "elm": 7, children: [{ "elm": 8, children: [{ "elm": 9, children: [{ "elm": 10 }] }] }] }] }] },
result = function (object) {
function dig(a) {
this.push({ elm: a.elm });
Array.isArray(a.children) && a.children.forEach(dig, this);
}
var r = {};
Object.keys(object).forEach(function (k) {
object[k].forEach(function (a) {
var array = [];
r[k] = r[k] || [];
r[k].push({ elm: a.elm, children: array });
Array.isArray(a.children) && a.children.forEach(dig, array);
});
});
return r;
}(obj);
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
相关文章:
- 更改JSON对象的结构
- 嵌套对象结构
- 从json对象聚集数据并创建层次结构
- 如何迭代json对象结构以只获取名称
- ES6非结构化中的计算属性-非结构化整体对象
- 如何在Javascript中连接两个结构不同的对象
- redux 中状态对象的结构
- 文字与原型对象表示法的数据结构
- 从knockout.js中的另一个对象更新一个深度结构化的javascript对象
- JSDoc:返回对象结构
- 通过键将平面对象转换为嵌套结构
- 关于JavaScript对象结构属性的问题
- 如何用以下结构定义一个空的javascript对象,以便我可以动态地将数据插入其中
- 无法识别的数据结构-转换为对象
- 无法通过jQuery查找来定位层次结构中的对象
- Rails结构到JSON对象
- 将字符串(带有结构对象)转换为对象
- 从HTML大纲创建层次结构对象
- 特殊的JavaScript结构:对象定义中的对象类型变量
- Null在Javascript中检查大型层次结构对象