我有一個包含 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',
}))
uj5u.com熱心網友回復:
你期待這樣的結果嗎?如果你不介意 lodash。
const _ = require('lodash');
const getNames = (arr) => {
return arr.map((obj) => {
const id = obj.id;
const englishtext = _.get(obj, 'name[0].text', 'N/A');
const frenchtext = _.get(obj, 'name[1].text', englishtext);
return { id, englishtext, frenchtext };
});
};
console.log(getNames(x));
// [
// { id: '1', englishtext: 'HOLIDAY', frenchtext: 'HOLIDAY' },
// { id: '2', englishtext: 'Stat Holiday', frenchtext: 'Congé Férié' },
// { id: '3', englishtext: 'Over', frenchtext: 'Over' }
// ]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/339116.html
標籤:javascript 数组 json
上一篇:如何在Go語言中對陣列進行排序?
