From 4fe2fc8d1af2e931813b9f005f3f0ff8072ae13c Mon Sep 17 00:00:00 2001 From: Ashish Shubham Date: Thu, 20 Oct 2016 04:00:19 -0700 Subject: [PATCH 1/3] Expose Numbers as array options when transposing --- lib/utils/dataobject-parser.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/utils/dataobject-parser.js b/lib/utils/dataobject-parser.js index d84b972..73e8117 100644 --- a/lib/utils/dataobject-parser.js +++ b/lib/utils/dataobject-parser.js @@ -5,8 +5,10 @@ */ var _ = require('lodash'); -function DataObjectParser($data){ +function DataObjectParser($data, options){ this._data = $data || {}; + options = options || {}; + this._numbersAreArrays = !!options.transposeNumAsArray; } /** @@ -35,12 +37,20 @@ DataObjectParser.prototype.set = function($path, $value) { $obj[$key] = $data; } }; + + var isTreatLikeArray = function(key) { + if(_.isNumber(key)) { + return this._numbersAreArrays; + } + + return key === "[]"; + } while(pathList.length > 0) { parentKey = pathList.shift().replace(/["']/g, ''); - // Number, treat it as an array - if (!isNaN(+parentKey) || parentKey === "[]") { + // Number, check whether to treat as Array + if (isTreatLikeArray(parentKey)) { if(!_.isArray(parent) /* prevent overwritting */ ) { parent = []; addObj(grandParent, grandParentKey, parent); From 6c1de39fd71927437ffc062aef7a605dc5257e7e Mon Sep 17 00:00:00 2001 From: Ashish Shubham Date: Thu, 20 Oct 2016 04:03:52 -0700 Subject: [PATCH 2/3] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e8e7b9..c283cb2 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ That is, where ```obj``` is equivalent to: flat = DataObjectParser.untranspose(structured) - structured = DataObjectParser.transpose(flat) + structured = DataObjectParser.transpose(flat, [options] /*default: {transposeNumAsArray : false}*/) Where the equivalent results would be: From 5cead9fbe0a62b36532cbbdc119b5cb615125545 Mon Sep 17 00:00:00 2001 From: Bhavya Jain Date: Wed, 29 Jan 2025 16:37:41 +0530 Subject: [PATCH 3/3] Fixed isNumber function insided isTreatLikeArray Method --- lib/utils/dataobject-parser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils/dataobject-parser.js b/lib/utils/dataobject-parser.js index 204c15b..efd3b46 100644 --- a/lib/utils/dataobject-parser.js +++ b/lib/utils/dataobject-parser.js @@ -73,7 +73,7 @@ DataObjectParser.prototype.set = function($path, $value) { }; var isTreatLikeArray = function(key) { - if(_.isNumber(key)) { + if(_isNumber(key)) { return this._numbersAreArrays; }