逐个打印数组元素,而不是打印数组



我有.json文件,但由于它很大,我将粘贴一个它的外观示例:

[{"translations": {
"ces": {
"official": "Aruba",
"common": "Aruba"
},
"deu": {
"official": "Aruba",
"common": "Aruba"
},
"est": {
"official": "Aruba",
"common": "Aruba"
},
"fin": {
"official": "Aruba",
"common": "Aruba"
},
"fra": {
"official": "Aruba",
"common": "Aruba"
},
"hrv": {
"official": "Aruba",
"common": "Aruba"
},
"hun": {
"official": "Aruba",
"common": "Aruba"
},
"ita": {
"official": "Aruba",
"common": "Aruba"
},
"jpn": {
"official": "u30a2u30ebu30d0",
"common": "u30a2u30ebu30d0"
}}]

json原始文件包含10多个这样的块。如果你很好奇,你可以查看链接:https://raw.githubusercontent.com/TheRadioDept/technical-question/main/countries.json

我还有一个javascript代码,它使用require方法从.json文件中读取值。

const enteredKey = process.argv.slice(2);
console.log('Key is : ', enteredKey);
/* Checking if number of parameters more than 0 */
/* Checking if entered translation key is supported by.json file. */
// eslint-disable-next-line max-len
if (enteredKey.length < 2 && enteredKey !== null &&  removeDuplicates(keys).includes(enteredKey[0])) {
try {
console.log(data.map(point => point.translations[0][enteredKey] ?
// eslint-disable-next-line max-len
point.translations[enteredKey].official: `No translation for ${ enteredKey }.`));
} catch (error) {
console.log('Cannot translate variable');
}
} else {
console.log('Incorrect key parameter');
}

当程序运行时,它使用一个CLI参数,例如deu,并在.json文件中返回该键的所有参数(正式名称`(。请注意,在我的本地电脑上,.json和JS文件都存储在同一个文件夹中。

我所需要的不是为整个keys数组做一个console.log,而是一个接一个地记录(打印(它们。我尝试过使用for loop,但由于我不熟悉.json结构,我不知道如何单独打印它。这是我试过的for loop

for(i = 0; i < data.translations[enteredKey]; ++i) { 
console.log(data.map(point => point.translations[enteredKey] ?
// eslint-disable-next-line max-len
point.translations[enteredKey].official: `No translation for ${ enteredKey }.`));

}

输出为console.log('Cannot translate variable');

有人能帮忙吗?

如果我正确理解您的要求,您需要检查您拥有的JSON中的enteredKey,如果密钥可用,则需要打印official key value其他No translation available文本。如果是,那么您可以尝试此

const data = [{
"translations": {
"ces": {
"official": "Aruba",
"common": "Aruba"
},
"deu": {
"official": "Aruba",
"common": "Aruba"
},
"est": {
"official": "Aruba",
"common": "Aruba"
}
}
}];
const enteredKey = 'deu';
const res = data.map(point => point.translations[enteredKey] ?
point.translations[enteredKey].official : `No translation for ${enteredKey }.`)[0];
console.log(res);

最新更新