JSON:向下钻取&操作嵌套对象
JSON: Drill down & manipulate nested objects
我有这个foo
object
,它是动态对象- foo
对象可以有一个嵌套的parent
object
,也可以有一个嵌套的parent
object
等等。在这种情况下,最好的方法是:
1)得到最后一个有父对象?
2)用所有嵌套的父对象+第一个对象(foo.obj)填充数组?
foo: {
caption: "Italian",
code: "",
id: 17,
parent: {
caption: "Restaurants",
code: "",
id: 9,
parent: {
caption: "Food and Drink",
code: "food_and_drink",
id: 1,
parent: ""
}
}
};
是while
的作品吗?
如果你只使用普通JS。
1。使用loop:
处理function findLastParent(el) {
var parent = el,
notFound = true;
while (notFound) {
if (parent.parent) {
parent = parent.parent
} else {
notFound = false;
}
}
return parent;
}
1 b。使用递归方法(注意调用堆栈的大小,因为每次创建新的函数指针时):
function findLastParent(el) {
if (el.parent) {
return findLastParent(el.parent)
} else {
return el
}
}
2 a。使用递归的方法(使用循环将类似于从1点开始的代码):
function getAsArray(el, acc) {
acc.push(el);
if (el.parent) {
return getAsArray(el.parent, acc);
} else {
return acc;
}
}
var result = getAsArray(root,[]);
递归性是你正在寻找的。你需要:
#1创建一个函数来接收一个对象,并测试它的父属性中是否有任何内容。#2如果你的对象parent有数据,你需要在那个对象内部迭代。迭代(OBJ.parent)
#3如果你的对象没有数据,这必须是最后一个元素,(返回OBJ)。
当你解决这个问题时,你可能会尝试用多个父节点/节点来解决它,并尝试打印最新节点中的所有元素
foo: {
caption: "Italian",
code: "",
id: 17,
parent: {
caption: "Restaurants",
code: "",
id: 9,
parent:[ {
caption: "Chairs and Tables",
code: "chairs_and_tables",
id: 2,
parent: ""
},
{
caption: "Food and Drink",
code: "food_and_drink",
id: 1,
parent: ""
}]
}
}
相关文章:
- 用嵌套函数和默认函数定义函数
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 可以简化嵌套的延迟Q Promises解析吗
- 用于搜索的聚合物嵌套绑定
- 节点.js中的嵌套异步操作
- emberJS 2:用于操作的嵌套关系资源(更新和删除)
- 有没有更简单的方法可以为不同的选择器链接不同的 jQuery 操作,然后嵌套 $.when
- 此操作器用于嵌套函数
- 在唯一模板中呈现的Symfony多个控制器操作 - 已达到最大嵌套级别
- 嵌套JQuery循环中的基本操作
- 处理Bluebird中的多个嵌套异步操作(promise)
- 使用forEach、映射或筛选器克隆和操作嵌套对象,而不修改原始对象
- 操作JSON对象:如何引用和更新嵌套值
- 如何将部分表单's数据传递给Rails操作(使用javascript &没有嵌套属性)
- 对象不支持此操作'当“newing"嵌套的Javascript对象实例
- JSON:向下钻取&操作嵌套对象
- 当涉及到嵌套元素时,如何使用jQuery操作html表单?
- 如何在JS-Data资源上创建嵌套的自定义类操作?
- 如何处理单元测试中的嵌套异步操作
- 当嵌套异步函数完成时执行某些操作