在数字数组中添加平均平滑数字

Add average smooth numbers inside an array of numbers

需要 google 应用程序脚本来平滑数字数组,通过使用 for 循环在该数组中添加具有多个因子的额外平滑数字。示例假设数组是 - myarray = ["1", "4","2", "1","5","2"];并且倍数为 1 那么数字的平滑数组应该是 - (1),2,3,(4),3,(2),(1),2,3,4,(5),4 ,3,(2)。在新数组中,括号中的数字是 myarray[] 中的数字,不在括号内的数字是平滑数字,需要添加到新的平滑数组中。逻辑是每个最近的项目都除以多个因子,并且应该添加到前一个项目的商直到 <= 到最近的项目。就像在 myarray[] 中假设倍数为 2 那么新数组应该是 -(1), 3,(4),(2),(1),3,(5),3,(2)。这里 myarray[] 中的第二个最近的项目是 4,所以 4 除以倍数 2,商 2 与我的 array[] 中的前一个项目 1 相加直到 <= 到最近的项目并按顺序这样做,以便新的通过添加平滑数字制成的数组。

顺滑

function smoooth() {
  const arr = [1, 4, 2, 1, 5, 2];//original array
  const sa = [];
  arr.forEach((v, i, a) => {
    let incr = a[i + 1] > v ? 1 : -1;
    let n = Math.abs(a[i + 1] - v) - 1;
    sa.push(v);
    if (!isNaN(n)) {
      [...Array.from(new Array(n).keys())].forEach(x => {
        sa.push(sa[sa.length - 1] + incr);
      });
    }
  });
  Logger.log(JSON.stringify(sa));
  return sa;
}