从数组生成新的数字顺序

Generate new order of numbers from array

我目前正在尝试从当前数组生成一个新的数字顺序,其中的数字为 1 - 10。

比如我有这样的数组:

data = [
    {
        0: 1,
        1: 2,
        2: 3,
        3: 4,
        4: 5,
        5: 6
    },
    {
        0: 1,
        1: 2,
        2: 3,
        3: 4,
        4: 5,
        5: 8
    }
]

我正在尝试根据 1 - 10 的数字从这个数组生成一个新订单。

例如: 我希望它生成这样的新订单:

    0: 1,
    1: 2,
    2: 3,
    3: 4,
    4: 5,
    5: 7 (The new number)

它检查数组的顺序,并使用 1 - 10 之间的数字进行新排序

首先要做的是创建一个包含总值的对象。我们可以通过遍历数组中的每个对象并将每个值添加到一个新对象来实现这一点。为此,我们可以在 data 数组上使用 reduce 方法。

之后用总计遍历对象,并将每个值除以 data 数组中存在的对象数量。

使用 Math.round() 将每个值四舍五入到最接近的整数。

const data = [{
    0: 1,
    1: 2,
    2: 3,
    3: 4,
    4: 5,
    5: 6
  },
  {
    0: 1,
    1: 2,
    2: 3,
    3: 4,
    4: 5,
    5: 8
  }
];

function getDataTotal(data) {
  const totalObject = data.reduce((total, curObj) => {
    for (const key of Object.keys(curObj)) {
      total[key] = total[key] 
        ? total[key] + curObj[key] 
        : curObj[key];
    }

    return total;
  }, {});

  const averageObject = {};
  for (const [key, value] of Object.entries(totalObject)) {
    averageObject[key] = Math.round(value / data.length);
  }

  return averageObject;
}

const averageObject = getDataTotal(data);
console.log(averageObject);

确保两个对象上的键相同。

const data = [
  {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6},
  {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 8},
]

getAverageValueOfMappingElements() {
      const keys = Object.keys(data[0])

      return [...keys].map(key => {
        return (data[0][key] + data[1][key]) / 2
      })
    }