2013-11-02 253 views
-1

有人可以解释如何迭代所有对象的键值对吗?我是否需要将字符串化的对添加到新对象中,然后返回该对象?到目前为止,我已经得到了以下内容,它适用于嵌套对象,但它只会返回第一对。在第一个键后,循环通过一个对象的For循环停止

var objectify = function (obj, stringifyJSON) { 
     for (var key in obj) { 
      if (obj.hasOwnProperty) { 
       return (stringifyJSON(key) + ":" + stringifyJSON(obj[key])); 
      } 

因为它是,对于像对象{ “一”:1, “B”:2, “C”:3},我发现了背面只是{ “一”:1}。

我也试过如下:

var objectify = function (obj, stringify) { 
    var holder = {}; 
     for (var key in obj) { 
      if (obj.hasOwnProperty) { 
       holder[stringifyJSON(key)] = stringifyJSON(obj[key]); 
      } 
     } 
     return ("" + holder + ""); 
    }; 

刚刚返回{[对象的对象]}。我试着用引号分配键和值,并且没有对键和值调用stringify,但是这些都返回{[object Object]}。

下面是调用对象化的片段:

else if (typeof obj === "object" && obj !== null) { 
    return ("{" + objectify(obj, stringifyJSON) + "}"); 
} 
+0

您实际想达到的最终结果是什么? –

+0

我试图让它返回一个包含对象的字符串,其中的每一对也都被字符串化了。 l2mt的答案(指出我需要持有人var是一个字符串,而不是一个对象)基本上是我所期待的。 – TuringTested

+0

@ Steve:“包含对象的字符串”非常含糊。我很高兴l2mt能够帮助!下一次的链接,让你更快得到更好的答案:http://stackoverflow.com/help/how-to-ask \ * http://meta.stackexchange.com/questions/156810/stack-overflow-question-清单 –

回答

0

不要使用环形折返。 一个可能的解决方案可能是:

var objectify = function (obj, stringifyJSON) { 
    var tmp = ''; 
     for (var key in obj) { 
      if (obj.hasOwnProperty) { 
       tmp = tmp + (stringifyJSON(key) + ":" + stringifyJSON(obj[key])); 
       tmp =+ '; '; // here you can put any char that you want to separate objects 
      } 
     } 
     return tmp; 
    } 
+0

太好了,谢谢。你介意对这件事情进行阐述吗?我回来{NaN}。 – TuringTested

+0

对不起,是+ =还是更好用=> tmp = tmp +';'; – l2mt

相关问题