Пример.
if (data[key1] === undefined) {
data[key1] = {};
}
if (data[key1][key2] === undefined) {
data[key1][key2] = {};
}
data[key1][key2][key3] = value;
Можно написать функцию, которая принимает ([key1, key2, key3], value) и делает то же самое в цикле, инициализируя ключи объекта. А какие еще варианты есть?
Вопрос необходимости сильно вложенной структуры данных не рассматривается.