如何在Javascript中通过插入数字并将数字移到右边来添加到数组中

如何在Javascript中通过插入数字并将数字移到右边来添加到数组中,javascript,arrays,Javascript,Arrays,我试图在数组中插入一个值。我没有改变数组的大小。我只想插入一个值,然后使用以下算法将插入后的所有数字向右移动: 转到数组中的最后一个元素n=(长度-1) 如果不是传递的索引(n>index),则将其值设置为前一个元素A(n)=A(n-1)的值 如果是传递的索引(n=索引),则将该值设置为传递的值A(n)=值并退出 向左移动一个元素n=n-1 重复步骤2、3和4 我该怎么做?此外,我不能使用任何内置数组函数。下面是我的Javascript代码示例: var array = []; for(var

我试图在数组中插入一个值。我没有改变数组的大小。我只想插入一个值,然后使用以下算法将插入后的所有数字向右移动:

  • 转到数组中的最后一个元素n=(长度-1)

  • 如果不是传递的索引(n>index),则将其值设置为前一个元素A(n)=A(n-1)的值

  • 如果是传递的索引(n=索引),则将该值设置为传递的值A(n)=值并退出

  • 向左移动一个元素n=n-1

  • 重复步骤2、3和4

  • 我该怎么做?此外,我不能使用任何内置数组函数。下面是我的Javascript代码示例:

    var array = [];
    for(var i=1; i<=1000; i++) {
    array.push(Math.round(Math.random()*100));
    }
    
    function InsertIntoArray(array,index,number){
    var numCount = 0
    var move = 0 ;
    for(var move = array.length - 1; move > index; move--)
    {
      if (move > index)
      {
          array[i] = array[i-1];
          numCount ++;
      }
      else (move == index)
      {
          array[index] = number;
          numCount++;
          break;
      }
    
    }
    console.log(move);
    console.log(numCount);
    console.log(array);
    }
    console.log(array);
    InsertIntoArray(array, 1, 11);
    
    var数组=[];
    对于(变量i=1;i索引;移动--)
    {
    如果(移动>索引)
    {
    数组[i]=数组[i-1];
    numCount++;
    }
    else(移动==索引)
    {
    数组[索引]=编号;
    numCount++;
    打破
    }
    }
    控制台日志(移动);
    console.log(numCount);
    console.log(数组);
    }
    console.log(数组);
    插入数组(数组,1,11);
    
    循环的问题是您使用的是
    array[i]=array[i-1]
    ,但循环中的索引变量是
    move
    ,而不是
    i

    您不需要在循环内执行
    if
    。循环完成后,只需插入新元素。您在
    else
    中也有语法错误——您没有在
    else
    之后放置测试,它自动与
    if
    相反

    函数插入数组(数组、索引、编号){
    //将索引后的所有元素上移1
    对于(var move=array.length-1;move>index;move--){
    数组[move]=数组[move-1];
    }
    //插入新元素
    数组[索引]=编号;
    }
    var数组=[];
    
    对于(var i=1;i循环的问题是使用的是
    array[i]=array[i-1]
    ,但循环中的索引变量是
    move
    ,而不是
    i

    你不需要在循环中执行
    if
    。只要在循环完成后插入新元素即可。你在
    else
    中也有语法错误——你没有在
    else
    之后进行测试,它自动与
    if
    相反

    函数插入数组(数组、索引、编号){
    //将索引后的所有元素上移1
    对于(var move=array.length-1;move>index;move--){
    数组[move]=数组[move-1];
    }
    //插入新元素
    数组[索引]=编号;
    }
    var数组=[];
    
    对于(var i=1;i,您可以在
    索引处将数组分为左数组和右数组,将项目添加到左数组中,并从右数组中删除最后一个项目。然后将两个数组合并:

    function InsertIntoArray(array,index,number){
        var leftArray = array.slice(0, index);
        var rightArray = array.slice(index, array.length - 1);
        leftArray.push(number);
        return leftArray.concat(rightArray);
    }
    

    。注意使用
    返回
    是为了更改给定数组的值,而不是本地
    数组
    值。只需在函数中更改
    数组
    ,将不会更改全局
    数组
    变量。

    您可以在
    索引
    中将数组分成左右两个数组,将该项添加到左侧数组,并从右侧移除最后一项。然后将两个数组合并:

    function InsertIntoArray(array,index,number){
        var leftArray = array.slice(0, index);
        var rightArray = array.slice(index, array.length - 1);
        leftArray.push(number);
        return leftArray.concat(rightArray);
    }
    

    。注意:使用
    return
    是为了更改给定数组的值,而不是本地
    array
    值。只需在函数中更改
    array
    将不会更改全局
    array
    变量。

    您非常接近,但所做的日志超出了要求。希望注释足够:

    //最初只需使用简单的测试用例
    var数组=[0,1,2,3];
    //原始函数中有一些未使用且无意义的变量,
    //他们被移除了
    函数insertIntoArray(数组、索引、值){
    //不允许索引大于长度-1
    if(index>array.length-1)返回;
    //循环,直到达到所需的索引,换档
    //值到下一个更高的索引
    对于(var move=array.length-1;move>index;move--){
    数组[move]=数组[move-1];
    }
    //现在必须已达到所需的索引并已移动
    //值,所以只需插入
    数组[索引]=值;
    }
    //原始数组
    document.write(数组+“
    ”); //插入 插入数组(数组,2,15); //修改数组
    document.write(array);
    您非常接近,但做的日志超出了要求。希望注释足够:

    //最初只需使用简单的测试用例
    var数组=[0,1,2,3];
    //原始函数中有一些未使用且无意义的变量,
    //他们被移除了
    函数insertIntoArray(数组、索引、值){
    //不允许索引大于长度-1
    if(index>array.length-1)返回;
    //循环,直到达到所需的索引,换档
    //值到下一个更高的索引
    对于(var move=array.length-1;move>index;move--){
    数组[move]=数组[move-1];
    }
    //现在必须已达到所需的索引并已移动
    //值,所以只需插入
    数组[索引]=值;
    }
    //原始数组
    document.write(数组+“
    ”); //插入 插入数组(数组,2,15); //修改数组
    document.write(array);
    使用这种方法,你不会丢失数组中的最后一项吗?或者这就是重点。@SpencerWieczorek他说他不想增加数组的大小。所以必须做点什么。
    array[i]
    应该是
    array[move]斯宾塞:这就是重点…所以基本上最后一项会被删除…例如:[1,2,3,4,5]在插入11[1,11,2,3,4]之后,你的代码看起来几乎正确,只是你的循环中没有
    i
    变量,它应该是
    array[move]=array[move-1]
    。用这种方法,你会不会丢失数组中的最后一个项目?或者这就是重点。@SpencerWieczorek他说他不想增加数组的大小。所以必须做点什么。
    array[i]
    应该是
    array[move]
    ,等等。Spencer:那会