我正在研究一個 Javascript 陣列,我需要在主陣列中回圈第二個陣列并獲取特定欄位的值的總和。下面是我的 JSON 的樣子。在這里我需要回圈陣列并得到ps_lessons.lesson_length_minutes
我需要 O/P 的總和為 118 (20 22 33 43)
[
{
"sort_id": 1,
"category": "Introduction",
"ps_lessons": [
{
"id": "48ca672b-aaca-473c-b54b-3cf699da848b",
"sort_id": 1,
"lesson_title": "Welcome to the course",
"lesson_length_minutes": 20
},
{
"id": "3f0f5715-a442-4262-ad32-6fb653df62c2",
"sort_id": 2,
"lesson_title": "What is React JS?",
"lesson_length_minutes": 22
}
]
},
{
"sort_id": 2,
"category": "Fundamentals",
"ps_lessons": [
{
"id": "e28abd67-29a4-4bc9-a415-fb5db0aabfa9",
"sort_id": 4,
"lesson_title": "Fundamentals of React JS",
"lesson_length_minutes": 33
},
{
"id": "1d9668da-94e6-4085-bd89-176cc4e8e62d",
"sort_id": 3,
"lesson_title": "Fundamentals of JSX",
"lesson_length_minutes": 43
}
]
}
]
我通過使用陣列方法 2 次嘗試了類似下面的方法map
,但它不起作用。誰能建議如何做到這一點?
const extract_mins_and_sum = (result) => {
console.log('result', result);
result.map((single_row) =>
let sum = 0;
single_row.ps_lessons.map((single_row_lesson) =>
( console.log(single_row_lesson.lesson_length_minutes);
sum = single_row_lesson.lesson_length_minutes)
)
);
};
謝謝文克
uj5u.com熱心網友回復:
直接的方法是遍歷大陣列的每個元素,并通過對每個ps_lessons
陣列使用 reduce 函式來獲得總和。
const extract_mins_and_sum = (result) => {
let sum = 0;
result.forEach((elem) => {
sum = elem.ps_lessons.reduce((acc, val) => acc val.lesson_length_minutes, 0);
});
return sum;
}
Map 通常用于將一個陣列映射到另一個陣列,但保留陣列長度、順序等元資料。reduce
根據您在回呼函式中使用的任何邏輯,Reduce 通常用于將陣列轉換為單個值。在此示例中,reduce 用于將陣列轉換為一些數字欄位的總和。
uj5u.com熱心網友回復:
你可以試試map
,flat
和reduce
。
const extract_mins_and_sum = (result) => {
return result.map(x => x.ps_lessons.map(y => y.lesson_length_minutes)).flat().reduce((a, b) => a b, 0)
};
uj5u.com熱心網友回復:
您可以使用使用 map 和 reduce 的解決方案將值提取到外部變數,如下所示:
const data = [
{
sort_id: 1,
category: "Introduction",
ps_lessons: [
{
id: "48ca672b-aaca-473c-b54b-3cf699da848b",
sort_id: 1,
lesson_title: "Welcome to the course",
lesson_length_minutes: 20,
},
{
id: "3f0f5715-a442-4262-ad32-6fb653df62c2",
sort_id: 2,
lesson_title: "What is React JS?",
lesson_length_minutes: 22,
},
],
},
{
sort_id: 2,
category: "Fundamentals",
ps_lessons: [
{
id: "e28abd67-29a4-4bc9-a415-fb5db0aabfa9",
sort_id: 4,
lesson_title: "Fundamentals of React JS",
lesson_length_minutes: 33,
},
{
id: "1d9668da-94e6-4085-bd89-176cc4e8e62d",
sort_id: 3,
lesson_title: "Fundamentals of JSX",
lesson_length_minutes: 43,
},
],
},
];
const sumMinutes = (lessons) => {
return lessons.reduce((acc, ps) => {
return (acc (ps.ps_lessons ? sumMinutes(ps.ps_lessons): ps.lesson_length_minutes));
}, 0);
};
console.log(sumMinutes(data))
uj5u.com熱心網友回復:
你可以使用reduce函式來解決這個問題
const data = [
{
sort_id: 1,
category: "Introduction",
ps_lessons: [
{
id: "48ca672b-aaca-473c-b54b-3cf699da848b",
sort_id: 1,
lesson_title: "Welcome to the course",
lesson_length_minutes: 20,
},
{
id: "3f0f5715-a442-4262-ad32-6fb653df62c2",
sort_id: 2,
lesson_title: "What is React JS?",
lesson_length_minutes: 22,
},
],
},
{
sort_id: 2,
category: "Fundamentals",
ps_lessons: [
{
id: "e28abd67-29a4-4bc9-a415-fb5db0aabfa9",
sort_id: 4,
lesson_title: "Fundamentals of React JS",
lesson_length_minutes: 33,
},
{
id: "1d9668da-94e6-4085-bd89-176cc4e8e62d",
sort_id: 3,
lesson_title: "Fundamentals of JSX",
lesson_length_minutes: 43,
},
],
},
];
const sumMinutes = (lessons) => {
return lessons.reduce((acc, ps) => {
return (acc (ps.ps_lessons ? sumMinutes(ps.ps_lessons): ps.lesson_length_minutes));
}, 0);
};
console.log(sumMinutes(data))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/486616.html
標籤:javascript 数组