【发布时间】:2021-10-27 01:35:09
【问题描述】:
我有一个包含 100 多个字段和嵌套字段的复杂查询。我想要做的是,对于每个索引,提取英文和法文文本。正如您在数组中看到的,某些索引没有法语文本。在那种情况下,我想获得英文文本。 对我来说,提取英文文本工作正常,因为文本已经存在,但如果是法语,我会收到未定义的错误。实现这一点的最佳方法是什么。这个需要 Loadash 还是只需要纯 JS 方法?
为了清楚起见,我在提取法语时出错,因为在某些字段中,法语文本不可用,在这种情况下我想使用英语值。
此外,如果我能够通过其语言字段而不是索引获取英语和法语值,则建议。我不知道该怎么做。
任何建议,文档表示赞赏。谢谢!
示例数组:
[
{
id: "1",
name: [
{
language: "en-US",
text: "HOLIDAY"
}
],
order: 6,
Groups: [
{
name: [
{
language: "en-US",
text: "REGULAR"
}
],
code: "REGEARN"
},
{
name: [
{
language: "en-US",
text: "CHARGE"
}
],
code: "CHARGE"
}
]
}
]
这里是重现我的错误的代码沙箱: CODE SAND BOX https://codesandbox.io/s/javascript-forked-5073j
编辑:
预期输出:
{
key: key,
englishtext: "Value Here",
frenchtext: "Value Here"
}
下面是一个工作代码,但问题是当没有法语或该字段时它不起作用。我得到未定义的错误。那么我可以从语言字段中获取所需的数据吗?
x.map((y) => ({
key: y.id,
name: y.name[0].text,
groupname: y.Groups ? x.Groups[0].name?.[0].text : 'N/A',
}))
【问题讨论】:
-
请在您的堆栈溢出问题中包含演示该问题的代码。
-
当然我会在我离开电脑的时候做这件事 rn:)
-
您希望输出如何?您想传递一个项目 ID 并获取英文和法文文本以及代码吗?或者你只是想要一个包含所有英语和法语文本的字符串数组(如果它们存在的话)?
-
鉴于我们不知道您想要的输出格式或输入格式实际上是什么,因为您的代码示例失败,因为它是一个数组数组,我能说的最好的就是尝试一个函数像这样。 ``` console.log(getLanguageTexts(x[1]), "en-US") function getLanguageTexts(group, preferredLanauge) { const prefLangResults = group.name.filter(c => c.language === preferredLanauge) 返回prefLangResults.length > 0 ? prefLangResults : group.name.find(c => c.language === "en-US") }``
-
给我们一个输出的例子。你想要代码、组、项目ID、文本吗?我有一种感觉,如果没有适当的上下文,文本是没有意义的。
标签: javascript arrays json