我有一个实际的问题,我需要在不实际使用JSON.stringify的情况下复制JSON.stringify。当你在函数中输入的是一个对象时,我在获取返回值时遇到了麻烦。例如,如果您插入
var obj = {a:1, b:2, c:3};
JSON.stringify (obj); // returns "{"a":1,"b":2,"c":3}"也就是说,我尝试使用for in循环将属性设置为正在传递的对象的字符串值。我这样做只是为了一个对象容器,但是这个函数实际上应该可以处理你通过它传递的任何东西,并且它会对它进行JSON.stringify。
var stringifyJSON = function(obj) {
var newObj = {};
for (var prop in obj){
newObj ={
stringProp:obj[prop]
};
}
return newObj;
};我想我已经关闭了数组部分。我很不擅长对象遍历。这里的结果是'Object {stringProp:3}‘。这是一个递归问题集中的练习问题,所以我认为他们不希望我使用循环。我只是想通过循环让它变得简单一点,然后我会尝试通过递归来复制它。
任何帮助都将不胜感激!
谢谢,B
发布于 2014-07-18 01:26:49
因为这是一个练习问题,所以我会试着给你指出正确的方向:
您需要在代码中使用一个循环,因为您需要递归地循环遍历对象中的每个属性。
至于递归部分,首先你需要定义你的“基本情况”。基于不应导致递归调用的输入的条件是什么?我给你一个很大的提示,当参数不是对象的时候。
对于您来说,棘手的部分是确定如何附加从递归调用中得到的字符串。
以下是一些基本的模板代码:
function myStringify( obj ) {
if ( typeof obj !== 'object' ) {
// base case
return ""+obj;
}
var str = "";
for ( var prop in obj ) {
if ( obj.hasOwnProperty( prop ) ) {
// recursive calls and string formatting magic
}
}
return str;
}https://stackoverflow.com/questions/24809725
复制相似问题