在第一个键之后停止通过对象的For-in循环

时间:2013-11-02 13:36:13

标签: javascript iteration for-in-loop

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

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的片段:

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

1 个答案:

答案 0 :(得分:0)

不要在循环中使用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;
    }