From 5f96861c4455bfd13341cab5f37d042bc99ed689 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Thu, 17 Dec 2015 15:10:15 -0800 Subject: [PATCH] [Duplicate] Handle single-element ID arrays Avoid type coercion related errors when testing to see if a value is an ID that needs to be remapped. --- platform/entanglement/src/services/CopyTask.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/platform/entanglement/src/services/CopyTask.js b/platform/entanglement/src/services/CopyTask.js index ea52beeb4b..97acf1b327 100644 --- a/platform/entanglement/src/services/CopyTask.js +++ b/platform/entanglement/src/services/CopyTask.js @@ -114,15 +114,19 @@ define( * @private */ CopyTask.prototype.rewriteIdentifiers = function (obj, idMap) { + function lookupValue(value) { + return (typeof value === 'string' && idMap[value]) || value; + } + if (Array.isArray(obj)) { obj.forEach(function (value, index) { - obj[index] = idMap[value] || value; + obj[index] = lookupValue(value); this.rewriteIdentifiers(obj[index], idMap); }, this); } else if (obj && typeof obj === 'object') { Object.keys(obj).forEach(function (key) { var value = obj[key]; - obj[key] = idMap[value] || value; + obj[key] = lookupValue(value); if (idMap[key]) { delete obj[key]; obj[idMap[key]] = value;