有很多關于計算陣列中唯一值的帖子,但我想根據第二個陣列計算陣列中的唯一值。具體來說:我想計算 內的不同出現次數arr,但計算內的所有值grade
arr = [
"12D","12D","12D",
"12C","12C","12C","12C","12C",
"12B","12B","12B","12B","12B",
"12B","12B",
"12A","12A","12A","12A","12A",
"12A","12A","12A","12A","12A",
"12A","12A"
]
grade = ["13B", "13A", "12D", "12C", "12B", "12A"]
result = arr.filter(item => grade.includes(item))
.reduce((acc, val) => {
acc[val] = acc[val] === undefined ? 1 : acc[val] = 1;
return acc;
}, {});
當前結果
我目前的結果確實計算了獨特的出現次數
{ '12D': 3, '12C': 5, '12B': 7, '12A': 12 }
期望輸出
但我想在我的最終物件中包含等級內的所有值(并按grade]
desired_result = {
'13B': 0,
'13A': 0,
'12D': 3,
'12C': 5,
'12B': 7,
'12A': 12
}
是否可以使用第二個向量來執行這種減少?
uj5u.com熱心網友回復:
另一種方法是從成績開始,并建立一個頻率表,如下所示。然后,您可以Object.fromEntries()在生成的陣列對陣列上呼叫:
const result = Object.fromEntries(
grade.map(grade => [grade, arr.filter(g => g === grade).length])
);
演示
顯示代碼片段
const arr = ["12D","12D","12D","12C","12C","12C","12C","12C","12B","12B","12B","12B","12B","12B","12B","12A","12A","12A","12A","12A","12A","12A","12A","12A","12A","12A","12A"];
const grade = ["13B", "13A", "12D", "12C", "12B", "12A"];
const result = Object.fromEntries(
grade.map(grade => [grade, arr.filter(g => g === grade).length])
);
console.log( result );
uj5u.com熱心網友回復:
您可以將成績映射為條目并將物件作為reduce 的起始值。
const
array = ["12D", "12D", "12D", "12C", "12C", "12C", "12C", "12C", "12B", "12B", "12B", "12B", "12B", "12B", "12B", "12A", "12A", "12A", "12A", "12A", "12A", "12A", "12A", "12A", "12A", "12A", "12A"],
grade = ["13B", "13A", "12D", "12C", "12B", "12A"],
result = array.reduce(
(acc, val) => {
if (val in acc) acc[val] ;
return acc;
},
Object.fromEntries(grade.map(g => [g, 0]))
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/362149.html
標籤:javascript 数组
