用于创建 JSON 对象的 Javascript 递归
Javascript Recursion for creating a JSON object
需要一些关于如何正确递归执行此操作的建议。
基本上我正在做的是输入一堆文本并将其返回为 JSON。
例如:
正文:
q
b
name:rawr
返回:
[
"q",
"b",
{
"name": "rawr"
}
]
以及以下输入:
q
b
name:rawr:awesome
将返回(输出格式不重要):
[
"q",
"b",
{
"name": {
"rawr": "awesome"
}
}
]
如何修改以下代码以允许递归方式在对象中包含对象。
var jsonify = function(input){
var listItems = input, myArray = [], end = [], i, item;
var items = listItems.split(''r'n');
// Loop through all the items
for(i = 0; i < items.length; i++){
item = items[i].split(':');
// If there is a value, then split it to create an object
if(item[1] !== undefined){
var obj = {};
obj[item[0]] = item[1];
end.push(obj);
}
else{
end.push(item[0]);
}
}
// return the results
return end;
};
我不认为递归是正确的方法,循环也可以做到这一点:
var itemparts = items[i].split(':');
var value = itemparts.pop();
while (itemparts.length) {
var obj = {};
obj[itemparts.pop()] = value;
value = obj;
}
end.push(value);
当然,由于递归和循环具有等效的功能,因此您可以使用递归函数执行相同的操作:
function recurse(parts) {
if (parts.length == 1)
return parts[0];
// else
var obj = {};
obj[parts.shift()] = recurse(parts);
return obj;
}
end.push(recurse(items[i].split(':')));
这是一个递归的解决方案:
var data = [];
function createJSON(input) {
var rows = input.split("'n");
for(var i = 0; i < rows.length; i++) {
data.push(createObject(rows[i].split(":")));
}
}
function createObject(array) {
if(array.length === 1) {
return array[0];
} else {
var obj = {};
obj[array[0]] = createObject(array.splice(1));
return obj;
}
}
createJSON("p'nq'nname:rawr:awesome");
console.log(data);
相关文章:
- Eloquent JavaScript递归示例如何终止为返回1,但仍然输出指数值
- Javascript 递归不知道何时退出
- 用于创建 JSON 对象的 Javascript 递归
- Javascript递归函数引用了这一点
- javascript递归,按数组位置查找子级
- Javascript递归示例所需的说明
- 尝试将Javascript递归转换为PHP(很容易)
- JavaScript:递归函数不能正常工作
- JavaScript 递归重写与迭代数组堆栈
- Javascript:递归函数返回现有值的未定义
- JavaScript递归函数错误答案
- Javascript 递归地排序对象和嵌套对象以及数组
- 创建一个 JavaScript 递归过滤器函数
- JavaScript递归函数中的错误
- JavaScript + 递归函数返回 undefined
- Javascript - 递归 - 迭代 json,用户能够跳过
- Javascript 递归函数性能下降
- Javascript 递归重置计数
- 无法理解javascript递归程序
- JavaScript递归和范围说明