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

时间:2017-02-15 00:19:51

标签: javascript object testing

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

tests[JSON.stringify(test)] = test

问题在于JSON.stringify({color: undefined}) = {}JSON.stringify({}) = {}

相同

任何人都有改进或不同方法的想法吗?

1 个答案:

答案 0 :(得分:2)

如果您无法更改属性或使用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);