以下代码展示如何将一个包含多个子对象的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);

代码解释:

  1. 初始化对象和数组: 定义了一个名为 obj 的对象,其中包含两个子对象 m1m2,每个子对象包含多个属性和值。同时定义了一个名为 arr 的空数组,用于存储转换后的数据。
  2. 循环遍历对象: 使用 for...in 循环遍历 obj 对象的每个属性。
  3. 创建新数组元素: 对于每个子对象,再次使用 for...in 循环遍历其所有属性。如果属性名不是 total,则创建一个新的对象,包含 nametypevalue 属性,并将该对象推入 arr 数组。
  4. 排序: 使用 sort() 方法对 arr 数组进行排序,按照 value 属性值从大到小排序。
  5. 累加值: 使用 forEach() 方法遍历 arr 数组,并为每个元素计算 totalValue 属性,该属性等于当前元素的 value 值加上之前所有元素的 value 值之和。
  6. 输出结果: 最后使用 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 对象转换为排序数组,并计算每个元素的累加值。这种方法可以用于处理各种数据结构,例如统计数据、配置文件等。

JavaScript对象转换为排序数组并计算累加值

原文地址: https://www.cveoy.top/t/topic/mi3L 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录