我觉得从最大值, 最小值等等方法剥离出来一个抽象的逻辑要好一点, 你这个一堆三元运算符挤在一起看着不头疼吗? 我反正是看都不愿看.
既然是对列作运算, 我的思路是先写一个列选择器, 返回指定列的数据, 这样不仅是求最大值, 求最小值, 以后要是有新的计算, 比如求平均值等等, 这个都可以复用.
[JavaScript] 纯文本查看 复制代码 // 原数据
const arrData = [
{
"col0": "2022/10/5",
"col1": 0.80,
"col2": 0.92,
"col3": 0.33
}, {
"col0": "2022/10/6",
"col1": 0.86,
"col2": 0.63,
"col3": 0.68
}, {
"col0": "2022/10/7",
"col1": 0.83,
"col2": 0.89,
"col3": 0.62
}
];
const memo = {}; // 存放已经选择过的列, 再次选择同样的列时不用再跑循环, 直接查
let selectCol = (data, colKey) => {
if (memo[colKey]) return memo[colKey];
let col = [];
data.forEach( element => {
col.push(element[colKey]);
})
memo[colKey] = col;
return col;
}
// 获得对象的key
const colKeys = Object.keys(arrData[0]);
let maxRow = {}, minRow = {};
colKeys.forEach( (colKey, index) => {
if (!index) {
maxRow[colKey] = "最大值";
minRow[colKey] = "最小值";
}
else {
maxRow[colKey] = Math.max(...selectCol(arrData, colKey));
minRow[colKey] = Math.min(...selectCol(arrData, colKey));
}
})
console.table([...arrData, maxRow, minRow]);
|