return 递归函数结果的位置
Where to return result of recursive function
我知道这是个愚蠢的问题,但我解决不了几个小时。
我有递归函数,它接受 JSON 对象并创建 XML 字符串:
function JSONtoXML(object, xml) {
var name = '';
for (var prop in object) {
if (object.hasOwnProperty(prop)) {
if (typeof object[prop] === 'object'){
JSONtoXML(object[prop], xml);
}
else {
if (prop === 'name') {
name = object[prop];
xml += '<' + name;
}
else if (prop === 'version') {
xml += ' version="' + object[prop] + '">\n<params>\n';
}
else if (prop === 'value') {
xml += '>' + object[prop] + '</' + name + '>';
}
else {
xml += ' ' + prop + '="' + object[prop] + '"';
}
}
}
}
};
我希望在函数完成时只 return XML 字符串,但我不知道在哪里写 return xml;
部分。无论我把它放在哪里,它 return 只是字符串的一部分。
function JSONtoXML(object, xml) {
var name = '';
for (var prop in object) {
if (object.hasOwnProperty(prop)) {
if (typeof object[prop] === 'object'){
JSONtoXML(object[prop], xml);
}
else {
if (prop === 'name') {
name = object[prop];
xml += '<' + name;
}
else if (prop === 'version') {
xml += ' version="' + object[prop] + '">\n<params>\n';
}
else if (prop === 'value') {
xml += '>' + object[prop] + '</' + name + '>';
}
else {
xml += ' ' + prop + '="' + object[prop] + '"';
}
}
}
}
return xml;// Here return the result
};
Return当你完成处理!在这种情况下,这是在函数关闭之前。
删除 xml 作为参数
function JSONtoXML(object) {
var name = '';
var xml = '';
for (var prop in object) {
if (object.hasOwnProperty(prop)) {
if (typeof object[prop] === 'object'){
xml += JSONtoXML(object[prop]);
}
else {
if (prop === 'name') {
name = object[prop];
xml += '<' + name;
}
else if (prop === 'version') {
xml += ' version="' + object[prop] + '">\n<params>\n';
}
else if (prop === 'value') {
xml += '>' + object[prop] + '</' + name + '>';
}
else {
xml += ' ' + prop + '="' + object[prop] + '"';
}
}
}
}
return xml;
};
我知道这是个愚蠢的问题,但我解决不了几个小时。
我有递归函数,它接受 JSON 对象并创建 XML 字符串:
function JSONtoXML(object, xml) {
var name = '';
for (var prop in object) {
if (object.hasOwnProperty(prop)) {
if (typeof object[prop] === 'object'){
JSONtoXML(object[prop], xml);
}
else {
if (prop === 'name') {
name = object[prop];
xml += '<' + name;
}
else if (prop === 'version') {
xml += ' version="' + object[prop] + '">\n<params>\n';
}
else if (prop === 'value') {
xml += '>' + object[prop] + '</' + name + '>';
}
else {
xml += ' ' + prop + '="' + object[prop] + '"';
}
}
}
}
};
我希望在函数完成时只 return XML 字符串,但我不知道在哪里写 return xml;
部分。无论我把它放在哪里,它 return 只是字符串的一部分。
function JSONtoXML(object, xml) {
var name = '';
for (var prop in object) {
if (object.hasOwnProperty(prop)) {
if (typeof object[prop] === 'object'){
JSONtoXML(object[prop], xml);
}
else {
if (prop === 'name') {
name = object[prop];
xml += '<' + name;
}
else if (prop === 'version') {
xml += ' version="' + object[prop] + '">\n<params>\n';
}
else if (prop === 'value') {
xml += '>' + object[prop] + '</' + name + '>';
}
else {
xml += ' ' + prop + '="' + object[prop] + '"';
}
}
}
}
return xml;// Here return the result
};
Return当你完成处理!在这种情况下,这是在函数关闭之前。
删除 xml 作为参数
function JSONtoXML(object) {
var name = '';
var xml = '';
for (var prop in object) {
if (object.hasOwnProperty(prop)) {
if (typeof object[prop] === 'object'){
xml += JSONtoXML(object[prop]);
}
else {
if (prop === 'name') {
name = object[prop];
xml += '<' + name;
}
else if (prop === 'version') {
xml += ' version="' + object[prop] + '">\n<params>\n';
}
else if (prop === 'value') {
xml += '>' + object[prop] + '</' + name + '>';
}
else {
xml += ' ' + prop + '="' + object[prop] + '"';
}
}
}
}
return xml;
};