【问题标题】:How to remove a specific element in array in JavaScript [duplicate]如何在JavaScript中删除数组中的特定元素[重复]
【发布时间】:2012-06-12 00:38:24
【问题描述】:

如果我有数组,例如:

a = ["a", "b", "c"]

我需要类似的东西

a.remove("a");

我该怎么做?

【问题讨论】:

  • 安顿下来。因为你显然没有搜索自己,所以我正在为你准备一个副本。
  • arr.splice(arr.indexOf(elm),1) 将从数组“arr”中删除元素“elm”

标签: javascript arrays object


【解决方案1】:
remove = function(ary, elem) {
    var i = ary.indexOf(elem);
    if (i >= 0) ary.splice(i, 1);
    return ary;
}

如果您的目标浏览器支持array.indexOf,否则使用该页面上的后备代码。

如果您需要删除 所有 个相等的元素,请按照 Rocket 的建议使用 filter

removeAll = function(ary, elem) {
    return ary.filter(function(e) { return e != elem });
}

【讨论】:

    【解决方案2】:

    如果您使用的是现代浏览器,则可以使用.filter

    Array.prototype.remove = function(x){
        return this.filter(function(v){
            return v !== x;
        });
    };
    
    var a = ["a","b","c"];
    var b = a.remove('a');
    

    【讨论】:

      【解决方案3】:
      var newArray = [];
      var a=["a","b","c"];
      for(var i=0;i<a.length;i++)
          if(a[i]!=="a") 
              newArray.push(a[i]);
      

      对于较新版本的 JavaScript:

      var a = ["a","b","c"];
      var newArray = a.filter(e => e !== "a");
      

      【讨论】:

      • 你知道有.splice对吗?
      • 是的,我知道。但我正在考虑数组可以有多个“a”
      • 我没想到。好点子。 +1
      • 数组只有唯一值!
      【解决方案4】:

      如果您不介意额外的有效负载(压缩和压缩后大约 4 kB),您可以使用without function of the Underscore.js library

      _.without(["a", "b", "c"], "a");
      

      Underscore.js会给你这个功能+很多非常方便的功能。

      【讨论】:

        【解决方案5】:

        我想出了一个简单的解决方案,从数组中省略必要的元素:

        <script>
            function myFunction()
            {
                var fruits = ["One", "Two", "Three", "Four"];
        
                <!-- To drop the element "Three"-->
                <!-- splice(elementid, number_of_element_remove) -->
                fruits.splice(2, 1);
        
                var x = document.getElementById("demo");
                x.innerHTML = fruits;
            }
        </script>
        

        【讨论】:

        • 这对Array和arraylist都有效
        【解决方案6】:
        let xx = ['a','a','b','c'];  // Array
        let elementToRemove = 'a';  // Element to remove
        xx =xx.filter((x) => x != elementToRemove) // xx will contain all elements except 'a'
        

        【讨论】:

          猜你喜欢
          • 2021-04-20
          • 2022-11-03
          • 2018-08-13
          • 2017-03-21
          • 2013-04-27
          • 1970-01-01
          • 1970-01-01
          • 2012-06-15
          相关资源
          最近更新 更多