2017-02-15 3 views
0

При написании тестов я JSON.stringify все входы и назначить их на объект в качестве ключей, а затем присвоить этот ключ фактическое значение следующим образом:как написать объект в качестве ключа, если свойство не определено

tests[JSON.stringify(test)] = test

проблема заключается в том, что JSON.stringify({color: undefined}) = {} так же, как если JSON.stringify({}) = {}

Кто-нибудь есть идея для модифицированного или иного подхода?

+1

'JSON.stringify ({ 'color': 'undefined'}) '? –

+0

'{color: null}', '{color: false}' или '{color: ''}' также может работать. Зависит от цели JSON. –

ответ

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);

Смежные вопросы