比赛结束后从阵列中移除物品

这个问题在这里已经有了答案:

  • 如何从JavaScript中的数组中删除特定的元素? 63个答案

  • 试试这可能对你有帮助

    function arr_diff(a1, a2)
    {
      var a=[], diff=[];
      for(var i=0;i<a1.length;i++)
        a[a1[i]]=true;
      for(var i=0;i<a2.length;i++)
        if(a[a2[i]]) delete a[a2[i]];
        else a[a2[i]]=true;
      for(var k in a)
        diff.push(k);
      return diff;
    }
    var a = [1,2,3,4,5,6]
    var b = [2,3]
    console.log(arr_diff(a,b));
    

    这里有几个错误。 首先,jQuery的inArray搜索元素,而不是subArrays。 所以你可以想象,你会发现

    $.inArray([2, 3], [[1, 2], [2, 3], [3, 4], [4, 5]])
    

    会产生1 ,但事实上即使这样也行不通,因为它遵循Array.prototype标准并与参考平等相比较。

    它当然不会找到数组[2, 3]作为[1, 2, 3, 4, 5] [2, 3]一个元素。

    接下来,如果确实发现了该数组, Array.prototype没有remove函数。

    你可能想看看Array.prototype.splice()


    这里有一个选项(从这个答案中借用的arraysEqual() ):

    function arraysEqual(a, b) {
        if (a === b) return true;
        if (a == null || b == null) return false;
        if (a.length != b.length) return false;
    
        for (var i = 0; i < a.length; ++i) {
            if (a[i] !== b[i]) return false;
        }
        return true;
    }
    
    for (var i = 0; i <= a.length - b.length; i++) {
        var slice = a.slice(i, i + b.length);
        if (arraysEqual(slice, b)) {
            a.splice(i, b.length);
        }
    }
    

    这遍历a的比较片ab ,当找到匹配去除片。

    链接地址: http://www.djcxy.com/p/19027.html

    上一篇: removing item from array after match

    下一篇: Opposite of Push(); (splice explanation)