将单个 json 拆分为单独的列表
Split individual json to separate list
我有以下嵌套的json列表。我已经实现了loopJson,但是它不是递归的,也不会传递第一个对象列表。如果有人可以建议应该进行递归调用的位置,以便执行递归,那就太好了。
{
"key": "math",
"right": {
"key": "Math"
},
"left": {
"key": "A Greek–English Lexicon",
"right": {
"key": "A-list"
},
"left": {
"key": "ASCII"
}
}
}
var loopJson = function(json){
if(json.left.key != null){
that.arrayTest.push({key:json.key,left:json.left.key});
}
if(json.right.key != null){
that.arrayTest.push({key:json.key,right:json.right.key});
}
}
目标:遍历每个对象并创建一个对象数组,该数组由具有键("键","右")或("键","左")的对象组成。由于当前的 json 是嵌套的,我想将 json 拆分为一个对象数组。但是,它不会遍历每个对象,因为它不是递归的。我必须找到一种方法来使其递归。
预期输出的示例:
[{key:"math",right:"Math"},{key:"math",left: "A Greek–English Lexicon"},{key: "A Greek–English Lexicon",left:""ASCII},{key: "A Greek–English Lexicon",right:"A-list"}]
var input = {
"key": "math",
"right": {
"key": "Math"
},
"left": {
"key": "A Greek–English Lexicon",
"right": {
"key": "A-list"
},
"left": {
"key": "ASCII"
}
}
};
var nestedMethod = function(input) {
var output = [];
if (input.right) {
output.push({ key: input.key, right: input.right.key });
output = output.concat(nestedMethod(input.right));
}
if (input.left) {
output.push({ key: input.key, left: input.left.key });
output = output.concat(nestedMethod(input.left));
}
return output;
}
document.write(JSON.stringify(nestedMethod(input)));
这是一个
具有递归函数和固定属性数组的建议,需要照顾。
var object = {
"key": "math",
"right": {
"key": "Math"
},
"left": {
"key": "A Greek–English Lexicon",
"right": {
"key": "A-list"
},
"left": {
"key": "ASCII"
}
}
},
array = [];
function getParts(object, array) {
['right', 'left'].forEach(function (k) {
var o;
if (object[k]) {
o = { key: object.key };
o[k] = object[k].key;
array.push(o);
getParts(object[k], array);
}
});
}
getParts(object, array);
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');
相关文章:
- (取消)使用单独的复选框激活复选框列表
- Codrops页面转换.如何创建单独的按钮,而不是列表项目的效果
- 使用Angular排序到单独的列表中
- Vue.js"track-by-$index”;,如何单独呈现列表项
- 使用php创建的下拉列表中的选择单独填充文本区域
- 角度过滤器ng重复到单独的列表中
- 尝试将长列表排序为单独的列
- 将单个 json 拆分为单独的列表
- 使用 C# MVC 将值列表放入单独的文本框中
- 如何在C# MVC的VIew中将列表数组拆分为单独的数组
- 如何制作一个项目列表,可以使用 Angular JS 单独切换
- 根据一个子jQuery单独隐藏下拉列表
- 分开一个段落列表,给每个单词单独的CSS
- 如何以大写字母单独显示下拉列表的选定值
- 嵌套列表-在单独的一行上显示每个ul级别
- 使用jquery填充UL列表,但不调用单独的JavaScript函数
- 如何将参数的字符串列表传递给函数,并将它们作为单独的参数分配
- React / Redux—假设我们有两个单独的待办事项列表,已完成的和未完成的
- 使用jQuery在单独的无序列表中查找具有匹配类名的列表项
- AngularJS:使用列表项作为单独列表的变量