0
私はパス文字列を持っています:'profile.name.en'
;forEachを使用して動的にネストされたオブジェクトを作成します。
これを使用してオブジェクトを動的に作成したいと考えています。私は、この関数とその作業を使用しています:
function set(obj, path, value) {
var schema = obj; // a moving reference to internal objects within obj
var arr = path.split('.');
var len = arr.length;
for(var i = 0; i < len-1; i++) {
var elem = arr[i];
if(!schema[elem]) schema[elem] = {};
schema = schema[elem];
}
schema[arr[len-1]] = value;
return schema;
}
はこのようにそれを使用します。
var a = {};
var path = 'profile.name.en';
var profileName = 'OleFrank';
var o = set(a, path, profileName);
// result
{
profile: {
name: {
en: 'OleFrank'
}
}
}
私はforループのforEachを使用しての代わりにリファクタリングしようとしたが、それはもう働いていません。どうしてこれなの??
とバージョン私達にあなたのforeachの試みを表示します。 – Turnip
レキシカルスコープによって引き起こされる可能性があります... –
なぜforEach?減らすほうが良いでしょう。 –