【发布时间】:2014-01-03 21:56:43
【问题描述】:
更新:
更新小提琴:http://jsfiddle.net/Y2xFV/10/
我接受了以下答案之一,尽管两者都令人满意。我选择的那个更接近我自己走的方向。然而,所提供的解决方案实际上都不能完全满足我的需要。
在实践中,我最终编写了满足我实际需求的 angular-js 函数,看起来像这样..
function getNames(obj) {
if(obj.attrs) {
console.log(obj.attrs.name);
// expressions that utilize key pair values..
}
if(!obj.children) {
return;
}
angular.forEach(obj.children, function(o) {
getNames(o);
});
}
感谢大家的cmets和建议。
==========================================
我在下面有一个 JSON 字符串,我必须获取所有名称的值。我知道有一种递归方式可以做到这一点,但我需要帮助。我在堆栈中搜索了一个解决方案,但没有找到任何可以直接解决它的东西。
我在工作。我会尽快更新小提琴。我的时间非常有限,有时我不会立即回到我的堆栈中。如果这对某人来说是个问题,我很抱歉。但是,我不需要毫秒内的答案,我接受建设性的批评:)。一旦我真正掌握了小提琴,我会发布问题。
[
{
"name": "john",
"surname": "doe",
"children": [
{
"name": "anne",
"surname": "peters"
}
]
},
{
"name": "joe",
"surname": "doe",
"children": [
{
"name": "bob",
"surname": "peters",
"children": [
{
"name": "bill",
"surname": "peters"
}
]
}
]
},
{
"name": "jim",
"surname": "doe"
}
]
我需要得到:
约翰 安妮 乔 鲍勃 账单 吉姆
【问题讨论】:
-
你没有在你的小提琴上做任何努力。由于 json 字符串存在多个问题,您目前遇到语法错误 - 您需要在整个字符串之外使用单引号,这有助于将所有内容都放在一行中,否则您必须处理 end-of-线路问题。到目前为止,我已经更新了fiddle 并添加了
JSON.parse以将其恢复为真实对象,但是现在您必须进行一些编码。 :-P -
自从那个错误之后我改变了我的小提琴两次。我不再明白了,我开始编写代码。我寻求有关递归代码的帮助..如果可能的话..如果没有,别担心,我最终会解决的。谢谢。
标签: javascript jquery json angularjs recursion