diff --git a/lib/write-type.js b/lib/write-type.js index 94a10ab..67b5657 100644 --- a/lib/write-type.js +++ b/lib/write-type.js @@ -31,6 +31,7 @@ function getWriteType(options) { var bin = binarraybuffer ? bin_arraybuffer : bin_buffer; var usemap = HAS_MAP && options && options.usemap; var map = usemap ? map_to_map : obj_to_map; + var strip_undef = options && options.strip_undef; var writeType = { "boolean": bool, @@ -229,6 +230,12 @@ function getWriteType(options) { // map 32 -- 0xdf function obj_to_map(encoder, value) { var keys = Object.keys(value); + + if (strip_undef) { + // skip encoding keys if their value is undefined + keys = keys.filter(function(key) { return value[key] !== undefined; }); + } + var length = keys.length; var type = (length < 16) ? (0x80 + length) : (length <= 0xFFFF) ? 0xde : 0xdf; token[type](encoder, length);