Hey,
Da war wohl wer schneller.
function setPath(object, path, value) { var properties = path.split('.'); var currentObject = object; for (let i = 0, l = properties.length - 1; i < l; i++) { var property = properties[i]; if (typeof currentObject[property] !== 'object') { var newObject = {}; currentObject[property] = newObject; currentObject = newObject; } else { currentObject = currentObject[property]; } } currentObject[property] = value; return object; }
Ich habe das jetzt nicht getestet (hast du?), aber ich habe meine Zweifel, ob das funktionieren wird.
Nehmen wir an, path
sei 'a.b.c.d.e' und value
sei 'value'; So wie ich das sehe, sieht deine vorletzte Zeile so aus: currentObject['d'] = 'value'
. Wobei currentObject
bereits das "d"-Object ist. Das "e" wird also niemals verarbeitet.
Nemox