javascript - 如果属性未定义,如何将对象写为键

标签 javascript object testing

在编写测试时,我JSON.stringify 所有输入并将它们作为键分配给一个对象,然后为该键分配实际值,如下所示:

测试[JSON.stringify(test)] = test

问题是 JSON.stringify({color: undefined}) = {} 就像 JSON.stringify({}) = {}

有人对修改或不同的方法有想法吗?

最佳答案

如果您不能更改属性或使用 undefined 以外的东西初始化它们,那么使用 replacer像这样将它传递给 stringify:

var obj = {key: "value", color: undefined, other: null};

// this function will be run over all key-value pairs in the object
function replacer(key, value) {
  if(value === undefined) // if the value is undefined
    return 'undefined';   // then return a string 'undefined' (or null if you want)
  return value;
}

// then pass replacer as second parameter to stringify
var str = JSON.stringify(obj, replacer);

console.log(str);

关于javascript - 如果属性未定义,如何将对象写为键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42238658/

相关文章:

javascript - 如何通过json提取Chrome开发者工具的网络选项卡内容

java - 数组对象未被修改。只有第一个元素不断变化。

javascript - 使用 Sinon 在 Javascript 中测试私有(private)成员

ruby-on-rails - 如何测试是否在对象上调用了方法 - Rails RSpec

javascript - 正则表达式强制特定长度,同时不以数字开头

javascript - 如何在 VueJS 中的 eventBus 上存储和访问数据

javascript - 在没有滚动条的浏览器中查看长图像的中心

javascript - 将 CSV 数据映射到新结构

Javascript合并两个对象

python - 我如何从 minimock 中的模拟方法访问对象的 "self"