实现一个递归函数,将对象转换为javascript中的字符串
Implement a recursive function that converts an object to a string in javascript
我有一个项目,要求我在不使用stringify的情况下将Object转换为字符串。这样做的目的是实现一个递归函数,将对象转换为字符串。我似乎有两个问题:
1( 我的函数将Object输出为字符串,似乎只输出第一个值,而不是其他值
function myToString(argObj) {
var str = "";
for (var val in argObj) {
if (argObj.hasOwnProperty(val)) {
str += val + " : " + argObj[val] + "'n";
console.log(str);
}
return str;
}
}
2( 我对以上循环中的理解是,它会打印对象中的每个键/值对,但它只打印第一个键/值。使用递归,我如何让它在每个键/值对上运行。
您在for循环中有返回值,这意味着它在第一次迭代时就返回了
function myToString(argObj) {
var str = "";
for (var val in argObj) {
if (argObj.hasOwnProperty(val)) {
str += val + " : " + argObj[val] + "'n";
document.write(str);
}
}
return str;
}
之后,您想知道argObj的任何属性是否是对象,这样您就可以递归地调用其中任何属性的函数。从这个SO帖子中获取一个函数来测试变量是否是对象。您可能不希望在递归调用中包含数组。你可能想打印它们的内容。(但这是另一个问题,嘿(然后你的代码变成这样:
function myAndSomeGuyOnStackOverflowToString(argObj) {
var str = "";
for (var val in argObj) {
if (argObj.hasOwnProperty(val)) {
var propertyValue = argObj[val];
if (isAnObject(propertyValue)){
propertyValue = myAndSomeGuyOnStackOverflowToString(propertyValue)
}
str += val + " : " + propertyValue + "'n";
document.write(str);
}
}
return str;
}
function isAnObject(objArg){
//choose your implementation from the many on that other post I mentioned
}
通过一些缩进和字符串格式设置,您应该可以顺利完成。
function myToString(argObj, res) {
if ( argObj !== null && typeof argObj === "object") {
for (var val in argObj)
res += val + " : " + argObj[val] + "'n";
}
if (typeof argObj === "number" || typeof argObj === "string")
return res + argObj;
return res;
}
通过调用myToString(object, "")
来调用此函数,它将返回一个字符串。希望它能帮助你,或者给你一些递归写作的想法。
相关文章:
- 如何在Javascript中将JSon对象转换为数组
- 使用JS将数组转换为json对象
- 如何使用json将对象列表从java转换为javascript
- 在Javascript中转换对象数组
- 如何将TypeScript对象转换为普通对象
- JavaScript代码问题:我正在将对象转换为数组
- Javascript如何转换对象数组
- 任何转换对象*值*的Javascript或Coffeescript“映射”函数
- 转换对象数组
- 转换对象或数组值的最佳方式
- 使用lodash转换对象的键和值的最优雅的方法是什么?
- Javascript/html5 2d Canvas Context -获取相对于Canvas的X, Y(相对于转换对象
- javascript,转换或强制转换对象
- 根据对象的不同,在转换对象时考虑旋转
- 在类中转换对象
- 转换对象数组的结构
- 用于在浏览器中转换对象(拖动、缩放、旋转和扭曲)的Javascript框架
- Javascript:通过lodash、下划线或corejavascript转换对象响应数组
- 如何转换对象数组
- 使用Lodash转换对象数组