Javascript 我认为我使用的拼接方法不正确

Javascript 我认为我使用的拼接方法不正确,javascript,arrays,splice,Javascript,Arrays,Splice,我正试图解决一个问题,我很难从我的拼接方法中得到答案。我试图从一个数组中取出所有奇数,按顺序排列,然后将它们放回数组中,同时保留偶数。在我的最后一个for循环中,我试图使用splice获取当前奇数的索引,删除它,并通过变量将排序后的奇数放回。这不是我想要的。谢谢你给我的任何帮助 function sortArray(array) { var odds = []; for (var i = 0; i < array.length; i++) { if (array[i]

我正试图解决一个问题,我很难从我的拼接方法中得到答案。我试图从一个数组中取出所有奇数,按顺序排列,然后将它们放回数组中,同时保留偶数。在我的最后一个for循环中,我试图使用splice获取当前奇数的索引,删除它,并通过变量将排序后的奇数放回。这不是我想要的。谢谢你给我的任何帮助

function sortArray(array) {

  var odds = [];

  for (var i = 0; i < array.length; i++) {

    if (array[i] % 2 !== 0) {

      odds.push(array[i]);

    }

  }

  odds.sort();

  console.log('array', array)

  for (var j = 0; j < array.length; j++) {

    var x = 0;

    if (array[i] % 2 !== 0) {

      x = odds.shift();

      console.log('x', x)

      array.splice(i, 1, x); <-- I think this is my problem...maybe...

      console.log('array 2', array)

    }

  }

  console.log(array)

  return array;

}


sortArray([5, 3, 2, 8, 1, 4])

我们需要两个参数

  • 要从中开始删除的元素的索引
  • 要删除的项目数 所以在你的代码中。 步骤1:创建奇数数组 第二步:分类 步骤3:从现有阵列中删除奇数 步骤4:将奇数数组连接到现有数组的末尾

    第一步和第二步都很好

    对于步骤-3和4

    for (var j = 0; j < array.length; j++) {
    
      var x = 0;
    
      if (array[j] % 2 !== 0) {
    
         array.splice(j, 1); 
      }
    }
     array = array.concat(odds);
    
    for(var j=0;j
    需要两个参数

  • 要从中开始删除的元素的索引
  • 要删除的项目数 所以在你的代码中。 步骤1:创建奇数数组 第二步:分类 步骤3:从现有阵列中删除奇数 步骤4:将奇数数组连接到现有数组的末尾

    第一步和第二步都很好

    对于步骤-3和4

    for (var j = 0; j < array.length; j++) {
    
      var x = 0;
    
      if (array[j] % 2 !== 0) {
    
         array.splice(j, 1); 
      }
    }
     array = array.concat(odds);
    
    for(var j=0;j
    您使用i来引用j循环中的索引。您使用i来引用j循环中的索引。