Json.Stringfy将函数替换为数组的

时间:2020-04-26 07:56:28

标签: javascript json

我仍在学习JavaScript,最近我在互联网上偶然发现了这段代码,解释了用数组替换JSON.stringify:

var ar = ['one', 'two', 'three'];

function replacer2(i, val) {
    if ( i === '0' ) { // identity operator and index in quotes
        return undefined; // attempt to remove from result
    } else if ( i == 1 ) { // equality operator and numeric version of index
        return 2;
    } else {
        return val; // return unchanged
    }
}

var json = JSON.stringify(ar, replacer2);
console.log(json);
// [null,2,"three"]

来源:https://www.dyn-web.com/tutorials/php-js/json/filter.php 现在我没有得到的部分是替换器2的功能参数,即i和val。我得到我应该是索引和val是ar(如果我在这里错了,请更正我)。但是函数如何知道呢?如何区分ar的索引和值?

1 个答案:

答案 0 :(得分:1)

不是indexvalue

首先了解这个Array is also an object。用键0,1,2 ....作为索引。

在函数中,两个参数分别是对象的keyvalue。如果您对以下对象执行JSON.stringify

{
   foo: 'a',
   bar: 'b'
}

在第一次迭代中,您将获得参数'foo', 'a',在第二次迭代中,您将获得参数'bar', 'b'

希望我很清楚。