Вот мой объект, когда я вхожу в него Chrome:
{}
de: {path: "/assets/trads/de.json", trads: {…}}
en: {path: "/assets/trads/en.json", trads: {…}}
es: {path: "/assets/trads/es.json", trads: {…}}
fr: {path: "/assets/trads/fr.json", trads: {…}}
it: {path: "/assets/trads/it.json", trads: {…}}
nl: {path: "/assets/trads/nl.json", trads: {…}}
ru: {path: "/assets/trads/ru.json", trads: {…}}
__proto__: Object
Вот его тип, когда я вхожу в него:
Object
Если я попытаюсь:
console.log(obj.en);
console.log(obj['en']);
console.log(obj.length);
Я получаю:
undefined
Если я делаю:
Object.keys(obj).forEach(e => console.log(e));
for (let i in obj) { console.log(obj[i] }
for (let i in obj) { console.log(i) }
Я ничего не получаю.
Как я сделал объект из createTradsObjFrom () (запускал на стороне клиента, получая JSON файлы, содержащие переводы для некоторого контента):
const getJson = path => {
return new Promise((resolve, reject) => {
$.getJSON(path, json => {
if (!json) return reject(new Error('Error while trying to get json for assets trads.'));
return resolve(json);
});
});
};
const createTradsObjFrom = (languages, tradsPaths) => {
return new Promise((resolve, reject) => {
try {
const obj = {};
languages.forEach(async (lang, index) => {
const path = tradsPaths[index];
obj[lang] = {
path,
trads: await getJson(path)
};
});
console.log('obj : ', obj);
return resolve(obj);
}
catch (err) {
return reject(new Error(err));
}
});
};
const getTrads = currentLanguage => {
return new Promise((resolve, reject) => {
const tradsDir = "/assets/trads/";
const languages = [
"de",
"en",
"es",
"fr",
"it",
"nl",
"ru"
];
const tradsPaths = languages.map(e => tradsDir + e + '.json');
createTradsObjFrom(languages, tradsPaths)
.then(trads => resolve(trads))
.catch(err => reject(err));
});
};
Спасибо за вашу помощь, я уже потратил слишком много времени на это. :)