JavaScript对象转换为排序数组并计算累加值
以下代码展示如何将一个包含多个子对象的JavaScript对象转换为一个排序数组,并计算每个元素的累加值:
var obj = {
'm1': {
'Frame_Shit_del': 1,
'total': 4,
'Messense_Mutation': 2,
'In_Frame_Del': 1
},
'm2': {
'Frame_Shit_del': 1,
'total': 3,
'Splite_Site': 1,
'Nonsense_Mutation': 1
}
};
var arr = [];
for (var key in obj) {
var subObj = obj[key];
for (var subKey in subObj) {
if (subKey !== 'total') {
arr.push({ 'name': key, 'type': subKey, 'value': subObj[subKey] });
}
}
}
arr.sort(function(a, b) {
return b.value - a.value;
});
var totalValue = 0;
arr.forEach(function(item) {
totalValue += item.value;
item.totalValue = totalValue;
});
console.log(arr);
代码解释:
- 初始化对象和数组: 定义了一个名为
obj的对象,其中包含两个子对象m1和m2,每个子对象包含多个属性和值。同时定义了一个名为arr的空数组,用于存储转换后的数据。 - 循环遍历对象: 使用
for...in循环遍历obj对象的每个属性。 - 创建新数组元素: 对于每个子对象,再次使用
for...in循环遍历其所有属性。如果属性名不是total,则创建一个新的对象,包含name、type和value属性,并将该对象推入arr数组。 - 排序: 使用
sort()方法对arr数组进行排序,按照value属性值从大到小排序。 - 累加值: 使用
forEach()方法遍历arr数组,并为每个元素计算totalValue属性,该属性等于当前元素的value值加上之前所有元素的value值之和。 - 输出结果: 最后使用
console.log()打印排序后的数组arr。
运行结果:
[ { name: 'm1', type: 'Messense_Mutation', value: 2, totalValue: 2 },
{ name: 'm1', type: 'Frame_Shit_del', value: 1, totalValue: 3 },
{ name: 'm2', type: 'Frame_Shit_del', value: 1, totalValue: 4 },
{ name: 'm2', type: 'Nonsense_Mutation', value: 1, totalValue: 5 },
{ name: 'm1', type: 'In_Frame_Del', value: 1, totalValue: 6 },
{ name: 'm2', type: 'Splite_Site', value: 1, totalValue: 7 } ]
总结:
该代码演示了如何将一个 JavaScript 对象转换为排序数组,并计算每个元素的累加值。这种方法可以用于处理各种数据结构,例如统计数据、配置文件等。
原文地址: https://www.cveoy.top/t/topic/mi3L 著作权归作者所有。请勿转载和采集!