Ich habe diese klobige Funktion geschrieben, um zwei Strings zu nehmen und ein Objekt daraus zu erstellen. Das Ziel:Schleife diese verschachtelte Obj-Builder-Funktion?
// buildObj("house.wall.paint.color", "blue");
// returns {house: {wall: {paint: {color: "blue"}}}}
Ich bin in der Lage, ohne eine Schleife das rohe Gewalt zu tun, aber ich bin sicher, es kondensiert werden kann und vieles mehr elegant mit einer Schleife durchgeführt. Allerdings explodiert mein Kopf im fraktalen Wahnsinn, während ich versuche, die Verschachtelung und Indizierung zu manipulieren.
var p1 = "house.wall.paint.color";
var p2 = "blue";
var arr = [];
var obj = [];
buildObj(p1, p2);
console.log(obj);
function buildObj(p1, p2) {
var keys = p1.split('.');
var val = p2;
var arr = $.merge(keys, [val]);
var prop = {};
var prop2 = {};
var prop3 = {};
var prop4 = {};
var last = arr.length - 1;
prop[arr[last - 1]] = arr[last];
obj = prop;
prop2[arr[last - 2]] = obj;
obj = prop2;
prop3[arr[last - 3]] = obj;
obj = prop3;
prop4[arr[last - 4]] = obj;
obj = prop4;
return obj;
}
Danke schön. Genial. –
Ich bin froh, dass ich geholfen habe. :) –