3 移除数组arr中所有与item相等的元素,不更改原数组。

方法一:filter ES5方法

var a=[1,5,‘ff‘,‘g‘,‘h‘,‘sd‘];
alert(remove(a,‘g‘));         

function  remove(arr,item){
    return   arr.filter(function(ele){return ele !=item})
}

方法二:push方法

function  remove(arr,item){
    var arr2=[];
    for (var i=0;i<arr.length ;i++)
    {
        if (arr[i] !=item)
            {
            arr2.push(arr[i]);
           }
    }
    return arr2;
}

方法三:splice方法

//此方法的牛逼之处在于倒着删除相等的元素item,避免了正着删除时后面元素前移的问题;
function  remove(arr,item){
  var newarr=arr.slice(0);
  for (var i=newarr.length;i>=0 ;i-- )
  {

      if (newarr[i]==item)
      {

          newarr.splice(i,1);
      }
  }
  return  newarr;
}

方法四:利用数组本身的特性,将数组看作队列,使用push和shift方法来操作;

function remove(arr,item){
  var newarr=arr.slice(0);
  for (var i=0;i<newarr.length+1;i++) //注意此处的i<newarr.length+1;
    {

    if (newarr[0]!==item)
      {
        newarr.push(newarr[0]);
        newarr.shift();
      }
    else{
        newarr.shift();
       }
    }
  return newarr;
}

时间: 2024-09-28 11:32:26

3 移除数组arr中所有与item相等的元素,不更改原数组。的相关文章

js在数组arr中随机获取count数量的元素

// 在数组arr中随机获取count数量的元素; const getRandomArrayElements = (arr, num) => { // 新建一个数组,将传入的数组复制过来,用于运算,而不要直接操作传入的数组; let temp_array = new Array(); for (let index in arr) { temp_array.push(arr[index]); } // 取出的数值项,保存在此数组 let return_array = new Array(); fo

6.7-3将数组arr中索引值为2的元素替换为“bb”

package shuzu; import java.util.Arrays; public class TH { public static void main(String[] args) { // TODO Auto-generated method stub String arr[] = {"qq","ww","ee"}; for(String x : arr) { System.out.println("替换前数组arr中元素

封装函数,找出数组 arr 中重复出现过的元素.

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><script> //封装函数,找出数组 arr 中重复出现过的元素. //示例: console.log(duplicates( [1, 2, 4, 4, 3, 3, 1,

键盘录入6个int类型的数据存入数组arr中,将arr数组中的内容反转...

有一道很有意思的数组操作相关编程题,闲来无事用JS解决了一下,问题描述如下: (1) 键盘录入6个int类型的数据存入数组arr中: (2) 将arr数组中的内容反转: (3) 将反转后的数组角标为奇数的元素相互交换,即1和3交换,3和5交换,以此类推: (4) 将数组中最后一个角标为奇数的元素和数组中第一个角标为奇数的元素交换: (5)打印最终的数组,(实现了1—4步之后的数组) 示例:如用户输入的6个整数为[1,2,3,4,5,6]>[6,5,4,3,2,1]>[6,3,4,1,2,5]&

task 2:移出数组arr中与2相等的元素,并生成一个新数组,不改变原数组。

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>移出数组arr中与2相等的元素,并生成一个新数组,不改变原数组.</title> </head> <body> <script> var arr = [1,2,3,4,2,5,6,2,7,2]; var str4 = arr.slice(1,2); var st

数组求和,计算给定数组 arr 中所有元素的总和

一,题目分析:可以使用数组的归并方法计算,reduce和reduceRight.二者作用几乎相同.只是归并方向相反.reduce和reduceRight都可以接收两个参数.第一个是在每一项上调用的函数,第二个是归并基础的初始值. 二,解题. function sum(arr){ var sum=0; if(Array.prototype.reduce){ sum = arr.reduce(function(prev,cur,index,arr){ return prev+cur; }); ret

1.找出数组元素item在给定数组arr中的位置

var a=[1,5,'ff','g','h','sd']; alert(indexof(a,'g')); //3 function indexof(arr,item){ if (Array.prototype.indexOf) //判断Array原型中是否有此方法 { return arr.indexOf(item); } else{ for (var i=0;i<arr.length ;i++ ) { if(arr[i]==item){ return i } } } }

计算给定数组 arr 中所有元素的总和的几种方法

1.forEach遍历: function sum(arr) {     var result = 0;     arr.forEach(function(item,index) {         result += item;     });        return result; }; 2.reduce function sum(arr) { return arr.reduce(function(pre,cur){ return pre+cur; }) } 3. eval functi

是否改变原数组的常用方法归纳

改变原数组: 1.pop()  删除数组最后一个元素,如果数组为空,则不改变数组,返回undefined,改变原数组,返回被删除的元素 2.push()   向数组末尾添加一个或多个元素,改变原数组,返回新数组的长度 3.reverse()   颠倒数组中元素的顺序,改变原数组,返回该数组 4.shift()   把数组的第一个元素删除,若空数组,不进行任何操作,返回undefined,改变原数组,返回第一个元素的值 5.sort()   对数组元素进行排序,改变原数组,返回该数组 6.spli