我有一個復雜的 JS 物件和屬性陣列。其中一些回傳值但一些回傳空值,問題是當我通過串列映射時,只要有空值就會導致錯誤。
我現在無法過濾掉陣列,因為我已經在一個回圈中,不應該創建另一個過濾陣列。我最好的方法是什么?我希望我的回圈回傳 Array.Group.name[0].text,如果它不存在,則回傳 null。
const x = [
{
"id": "1",
"Groups": [
{
"name": [
{
"language": "en-US",
"text": "REGULAR_TIME"
}
],
"isSystem": true
},
{
"name": [
{
"language": "en-US",
"text": "CHARGEABLE"
}
],
"isSystem": true
}
]
},
{
"id": "2",
"Groups": [
{
"name": [
{
"language": "en-US",
"text": "REGULAR_TIME"
}
],
"isSystem": true
},
{
"name": [
{
"language": "en-US",
"text": "CHARGEABLE"
}
],
"isSystem": true
}
]
}
]
x.map(y=>y.Groups.name[0].text)
console.log(x)
uj5u.com熱心網友回復:
Groups也是一個陣列,所以你必須使用索引來訪問它的成員,比如Groups[0]. 目前尚不清楚Groups您想要獲得什么元素的名稱。
大概,你的意思是 x.map(y=>y.Groups[0].name[0].text)
Groups作為一個陣列也是一個物件。所以Groups.name沒有給你任何東西,因為這樣的屬性不存在。
let x = [
{
"id": "1",
"Groups": [
{
"isSystem": true
},
{
"name": [
{
"language": "en-US",
"text": "CHARGEABLE"
}
],
"isSystem": true
}
]
},
{
"id": "2",
"Groups": [
{
"name": [
{
"language": "en-US",
"text": "REGULAR_TIME"
}
],
"isSystem": true
},
{
"name": [
{
"language": "en-US",
"text": "CHARGEABLE"
}
],
"isSystem": true
}
]
}
];
console.log(x.map(y => y.Groups[0].name?.[0].text));
// or just filter the absent names out before the main routine.
console.log(x.filter(y => y.Groups[0].name).map(y => y.Groups[0].name?.[0].text));
uj5u.com熱心網友回復:
這就是問題所在!
Groups是一個陣列,所以:
let result = [];
for (i=0; i<x.length;i ){
for(j=0;j<x[i].Groups.length;j ){
result.push(x[i].Groups[j].name[0].text)
}
}
此回圈回傳包含文本陣列的結果
或者你可以試試這個:
x.forEach(el=>{
el.Groups.forEach(v=>{
result.push(v.name[0].text)
})
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/336809.html
標籤:javascript 数组
上一篇:如何使用Linqwhere條件檢查字串串列是否包含任何字串
下一篇:減少“同時讀取”回圈的處理時間
