【问题标题】:For-in looping through an object stops after first keyFor-in 循环遍历对象在第一个键后停止
【发布时间】:2013-11-13 13:54:02
【问题描述】:

有人能解释一下如何遍历对象的所有键值对吗?我是否需要将字符串对添加到新对象中,然后返回该对象?到目前为止,我有以下内容,适用于嵌套对象,但它只会返回第一对。

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

事实上,对于像 {"a": 1, "b": 2, "c":3 } 这样的对象,我只返回 {"a": 1}。

我还尝试了以下方法:

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

只返回 {[object Object]}。我试过用引号分配键和值,而不是在键和值上调用 stringify,但它们都返回 {[object Object]} 。

这是调用objectify的sn-p:

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

【问题讨论】:

  • 你真正想要达到的最终结果是什么?
  • 我试图让它给我一个包含对象的字符串,其中的每一对也被字符串化。 l2mt 的回答(指出我需要持有者 var 是一个字符串,而不是一个对象)基本上就是我要找的。​​span>
  • @Steve:“包含对象的字符串”相当含糊。我很高兴 l2mt 能够提供帮助!下次链接,让你更快得到更好的答案:stackoverflow.com/help/how-to-ask * meta.stackexchange.com/questions/156810/…

标签: javascript iteration for-in-loop


【解决方案1】:

不要在循环中使用 return。 一个可能的解决方案是:

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;
    }

【讨论】:

  • 太好了,谢谢。您介意详细说明 =+ 吗?我要回来了 {NaN}。
  • 对不起,是 += 还是更好用 => tmp = tmp + ';';
猜你喜欢
  • 2016-07-08
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-18
  • 2023-03-28
  • 2021-09-15
  • 2021-07-28
相关资源
最近更新 更多