Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将所有为零的元素移动到数组的末尾?_Javascript_Arrays - Fatal编程技术网

Javascript 如何将所有为零的元素移动到数组的末尾?

Javascript 如何将所有为零的元素移动到数组的末尾?,javascript,arrays,Javascript,Arrays,编写一个函数,该函数接受一个值数组,并将所有为零的元素移动到数组的末尾,否则保留数组的顺序。零元素还必须保持它们发生的顺序 零元素由0或“0”定义。某些测试可能包含非数字文字的元素 不允许使用任何临时数组或对象。也不允许使用任何Array.prototype或Object.prototype方法。因此不允许使用Array.push或splice() 我试过这个: function removeZeros(nums) { for(let i = nums.length - 1; i >

编写一个函数,该函数接受一个值数组,并将所有为零的元素移动到数组的末尾,否则保留数组的顺序。零元素还必须保持它们发生的顺序

零元素由0或“0”定义。某些测试可能包含非数字文字的元素

不允许使用任何临时数组或对象。也不允许使用任何Array.prototype或Object.prototype方法。因此不允许使用Array.push或splice()

我试过这个:

function removeZeros(nums) {

   for(let i = nums.length - 1; i >= 0 ; i--){
    if(nums[i] === 0){
      nums.splice(i, 1);
      nums.push(0);
    }
   }
   return nums;
}
输入: 预期: 实际: 结果是正确的,但我需要在没有array.push()或array.splice()的情况下执行此操作
  • 取原始数组的长度
  • 从原始数组中筛选非零值
  • 根据过滤后的数组长度与原始数组长度的差异,在末尾加零
  • 函数删除零(nums){
    让originalLen=nums.length
    设非零=nums.filter(布尔值)
    返回[…非零,…新数组(原始非零.长度).fill(0)]
    }
    log(删除零([7,2,3,0,4,6,0,0,13,0,78,0,0,19,14]))
    • 取原始数组的长度
    • 从原始数组中筛选非零值
    • 根据过滤后的数组长度与原始数组长度的差异,在末尾加零
    函数删除零(nums){
    让originalLen=nums.length
    设非零=nums.filter(布尔值)
    返回[…非零,…新数组(原始非零.长度).fill(0)]
    }
    
    log(删除零([7,2,3,0,4,6,0,0,13,0,78,0,0,19,14]))
    使用for循环,遍历数组,并使用简单的条件检查零

    var arr = [7, 2, 3, 0, 4, 6, 0, 0, 13, 0, 78, 0, 0, 19, 14];
    var prev_zero_index = 0;
    
    for (let i = 0; i < arr.length; i++) {
      if (arr[i] != 0 && arr[i - 1] == 0) {
        prev_zero_index++;
        arr[prev_zero_index] = arr[i];
        arr[i] = 0;
      }
    }
    
    var arr=[7,2,3,0,4,6,0,0,13,0,78,0,0,19,14];
    var prev_zero_指数=0;
    for(设i=0;i
    使用for循环,遍历数组,并使用简单的条件检查零

    var arr = [7, 2, 3, 0, 4, 6, 0, 0, 13, 0, 78, 0, 0, 19, 14];
    var prev_zero_index = 0;
    
    for (let i = 0; i < arr.length; i++) {
      if (arr[i] != 0 && arr[i - 1] == 0) {
        prev_zero_index++;
        arr[prev_zero_index] = arr[i];
        arr[i] = 0;
      }
    }
    
    var arr=[7,2,3,0,4,6,0,0,13,0,78,0,0,19,14];
    var prev_zero_指数=0;
    for(设i=0;i
    您可以使用:

    const arr=[7,2,3,0,4,6,0,0,0,13,0,78,0,0,19,14]
    arr.sort((a,b)=>(a==0)-(b==0))
    console.log(arr)
    您可以使用:

    const arr=[7,2,3,0,4,6,0,0,0,13,0,78,0,0,19,14]
    arr.sort((a,b)=>(a==0)-(b==0))
    console.log(arr)
    功能推零(arr){
    让计数=0;
    for(设i=0;i
    基本上,我循环遍历数组的所有元素,在循环时选取非零元素,并将其从同一数组的第0个位置存储。循环完成后,count将等于数组中非零元素的总数。然后,可以将Rest all初始化为零。

    函数pushZeros(arr){
    让计数=0;
    for(设i=0;i

    基本上,我循环遍历数组的所有元素,在循环时选取非零元素,并将其从同一数组的第0个位置存储。循环完成后,count将等于数组中非零元素的总数。然后可以将Rest all初始化为零。

    您只需执行以下操作:

    let data=[7,2,3,0,4,6,0,0,13,0,78,0,0,19,14]
    让结果=数据。排序((a,b)=>!!b-!!a)
    
    console.log(result)
    您可以简单地执行以下操作:

    let data=[7,2,3,0,4,6,0,0,13,0,78,0,0,19,14]
    让结果=数据。排序((a,b)=>!!b-!!a)
    
    console.log(result)
    但您使用的过滤函数是Array.prototype或Object.prototype的方法之一,这在这里是不允许的。@更新代码中的code ManiacArray.push()在这里也是不允许的。@ArjunKumar有太多的限制,无论如何您都可以使用
    扩展语法,concat无论你喜欢哪个,但你使用的过滤函数是Array.prototype或Object.prototype的方法之一,这在这里是不允许的。@更新代码中的code ManiacArray.push()在这里也是不允许的。@ArjunKumar有太多的限制,无论如何你可以使用
    扩展语法,无论您选择哪个
    like@ArjunKumar非零项的顺序与原始数组中的顺序相同<代码>7,2,3,4,6,13,78,19,14
    @ArjunKumar非零项的顺序与原始数组中的顺序相同<代码>7,2,3,4,6,13,78,19,14
    for
    后面的语法错误右大括号不匹配。虽然代码可以回答问题,但解释要点可以提高回答的质量
    for
    后面的语法错误右大括号不匹配。虽然代码可以回答问题,解释要点可以在不使用array.push和array.splice的情况下提高回答的质量。只有我编写了将零移动到数组末尾的算法。我没有收到您关于数组值的评论。顺序是否已更改?如果不使用array.push&array.splice,我只编写了将零移动到数组末尾的算法。我没有收到您关于数组值的评论,顺序是否已更改?
    [7, 2, 3, 4, 6, 13, 78, 19, 14, 0, 0, 0, 0, 0, 0]
    
    var arr = [7, 2, 3, 0, 4, 6, 0, 0, 13, 0, 78, 0, 0, 19, 14];
    var prev_zero_index = 0;
    
    for (let i = 0; i < arr.length; i++) {
      if (arr[i] != 0 && arr[i - 1] == 0) {
        prev_zero_index++;
        arr[prev_zero_index] = arr[i];
        arr[i] = 0;
      }
    }
    
    function pushZeros(arr) {
      let count = 0; 
      for (let i = 0; i < arr.length; i++) {
          if (arr[i] !== 0) arr[count++] = arr[i]; 
      }
      while (count < arr.length) arr[count++] = 0;
    
      return arr;
    }