Javascript 如何在具有特定长度的数组中均匀分布元素

Javascript 如何在具有特定长度的数组中均匀分布元素,javascript,arrays,algorithm,sorting,logic,Javascript,Arrays,Algorithm,Sorting,Logic,我试图从另一个数组中创建一个具有特定长度的数组,该数组的长度>1;i

我试图从另一个数组中创建一个具有特定长度的数组,该数组的长度<我要创建的新数组,不仅如此,我希望元素均匀地分布到数组中

我正在寻找的示例:

*我有:909 | 802 | 913

对于长度为7的新阵列,我的期望是:

909 | U | U | 802 | U | U | 913

另一个例子: *我们有:

101 | 203 | 144 | 135

长度为6的数组期望值:

101 | U | 203 | 144 | U | 135

*我们有:

909 | 802 | 913

长度为5的数组期望值:

909 | U | 802 | U | 913

*我们有:

909 | 802 | 913

长度为8的数组期望值:

909 | U | U | 802 | U | U | U | 913或

909 | U | U | U | 802 | U | U | U | 913没关系,这两个预期是正确的

U=未定义/空

在任何语言中,算法都可以是,我没有问题, 代码可能是这样的:

function spreadHomogeneously(newSize: number/*must be bigger than the length of elements/numbers*/, elements: Array<number>): Array<number> /*return is a homogeneous array*/{

  //logic

}
我的尝试:

function spreadHomogeneously(newSize, elements){
  if (newSize <= elements.length){
    return elements
  }else{
    var array = new Array(newSize);
    for (i = 0; i < elements.length; i++) { 
      array[i*newSize/elements.length] = elements[i]
    }
    return array;
  }
}

console.log(spreadHomogeneously(6, [1, 3, 5]));
输出: 指数0:1

指数2:3

指数4:5

但这不是我要找的

我希望这个想法很清楚,
感谢您可以在原始数组的每次迭代中使用一个整数变量,该变量随newSize-1的增加而增加。计算oldSize-1与该值的匹配次数:这将是将该值放入新数组的索引。要对此进行校准,请让该变量以oldSize-1的一半值开始,以便在最后一次迭代中,它将具有值oldSize-1/2+oldSize-1*newSize-1,这将转换为索引newSize-1,这正是最后一个原始值应该结束的位置

您的尝试的关键区别在于-1。这是因为结果数组中第一个值和最后一个值之间的索引距离不是newSize,而是newSize-1。应用于原始数组的相同推理意味着您必须使用oldSize-1

代码如下:

函数SpreadGeneouslyNewSize,元素{ 设div=elements.length-1; 新闻化-; 让结果=[]; 对于let i=0,j=div>>1;i}是的,谢谢,我添加了最接近结果的尝试,我不知道为什么这个问题被否决了。问题很清楚,但我对用例很好奇,因为可能有更好的方法。