From 1bf14dbd502b8644708ddb02dc80112b16f49b63 Mon Sep 17 00:00:00 2001 From: Simon Nishi Date: Tue, 16 Oct 2018 14:57:03 +0900 Subject: [PATCH] Add option to exclude undefined values when encoding objects --- lib/write-type.js | 7 +++++++ 1 file changed, 7 insertions(+) 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);