javascript - JSON.stringify 不在某些对象属性上运行替换函数
问题描述
我有这个特定的 JavaScript 对象:
var a = {x: Infinity, y: NaN, z: 'hello'};
当我JSON.stringify(a, r)
在以下代码中使用某个替换函数(如下)在该对象上运行时,我得到了预期console.log
的 s:
代码:
var a = {
x: Infinity,
y: NaN,
z: 'hello'
};
var r = function(key, value) {
console.log(value);
if (typeof value === 'string') {
return undefined;
}
return value;
};
console.log(JSON.stringify(a, r));
输出:
{x: Infinity, y: NaN, z: "hello"}
Infinity
NaN
hello
{"x":null,"y":null}
但是,当我对替换函数进行这个小修改时,JSON.stringify(a, r)
似乎没有迭代任何对象的属性并返回[object Object]
:
var a = {
x: Infinity,
y: NaN,
z: 'hello'
};
var r = function(key, value) {
console.log(value);
if (!isFinite(value)) {
return value.toString();
}
return value;
};
console.log(JSON.stringify(a, r));
输出:
{x: Infinity, y: NaN, z: "hello"}
"[object Object]"
我试图让函数返回
{"x":"Infinity", "y":"NaN", "z":"hello"}
我究竟做错了什么?
解决方案
您还需要检查类型。
var a = { x: Infinity, y: NaN, z: 'hello' },
r = function(key, value) {
if (typeof value === 'number' && !isFinite(value)) return value.toString();
return value;
};
console.log(JSON.stringify(a, r));
推荐阅读
- firebase - Firebase:从两个表中提取数据并排序
- marklogic-9 - 带有 hosts.xml 的不稳定集群重置为默认值
- django - Django 改进了更新视图?
- java - 当显式需要默认构造函数和参数化构造函数时
- svg - SVG 文本无法在 Chrome 或 Safari 中呈现
- laravel - 新鲜的 laravel lumen 找不到控制器驻留在控制器的子文件夹下
- c++ - 如何编写正确的“布尔”函数?
- c# - 将组合框项添加到对象列表并写入 txt 文件
- c# - 在 C# 中,是否允许编译器将浮点文字“升级”为双倍?
- java - JSONObject getString 在第一次运行时返回 null