为什么JSON.stringify()替换函数不起作用?

时间:2013-05-02 01:41:43

标签: javascript json

我有以下代码:

http://jsfiddle.net/8tAyu/7/

var foo = {
    "foundation": "Mozilla",
    "model": "box",
    "week": 45,
    "transport": {
        "week": 3
    },
    "month": 7
};

console.log(JSON.stringify(foo, 
                           function(k, v) { 
                               if (k === "week") 
                                   return v;
                               else 
                                   return undefined;
                           }));

所以据说,我认为至少没有嵌套的“周”会回来,我会看到如何让嵌套的那个回来。但无论我如何更改它,console.log打印出undefined,除非我将函数简单地更改为return v,然后我将整个对象取回。那是为什么?

1 个答案:

答案 0 :(得分:4)

首先,Stringify似乎被调用,对象的根目录为空“k”。我们返回undefined,并且所有处理都停止。

如果我们将其更改为:

if (!k || (k == "week") )

然后结果是:

{"week":45}

你不会得到嵌套的,因为我们为“transport”返回undefined并忽略其所有内容。