6

我有以下代码:

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始终,否则我会取回整个对象。这是为什么?

4

1 回答 1

5

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

如果我们将其更改为:

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

那么结果是:

{"week":45}

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

于 2013-05-02T01:48:47.183 回答