需要一些关于如何正确递归地做这些建议的建议.
基本上我正在做的是进入一堆文本并将其作为JSON返回.
例如:
文本:
q
b
name:rawr
Run Code Online (Sandbox Code Playgroud)
返回:
[
"q",
"b",
{
"name": "rawr"
}
]
Run Code Online (Sandbox Code Playgroud)
以下输入:
q
b
name:rawr:awesome
Run Code Online (Sandbox Code Playgroud)
会返回(输出格式不重要):
[
"q",
"b",
{
"name": {
"rawr": "awesome"
}
}
]
Run Code Online (Sandbox Code Playgroud)
如何修改以下代码以允许以递归方式在对象中包含对象.
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;
};
Run Code Online (Sandbox Code Playgroud)
我不认为递归是正确的方法,循环也可以这样做:
var itemparts = items[i].split(':');
var value = itemparts.pop();
while (itemparts.length) {
var obj = {};
obj[itemparts.pop()] = value;
value = obj;
}
end.push(value);
Run Code Online (Sandbox Code Playgroud)
当然,由于递归和循环具有相同的可能性,您可以使用递归函数执行相同的操作:
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(':')));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4774 次 |
最近记录: |