【问题标题】:Remove Strings from one Array if present in another如果存在于另一个数组中,则从一个数组中删除字符串
【发布时间】:2012-09-06 12:29:21
【问题描述】:

这是一个相当基本的问题,但我正在寻找最佳解决方案。我有 2 个 javascript 字符串数组。让我们说

A: ["Stark", "Targaryen", "Lannister", "Baratheon"]
B: ["Greyjoy", "Tyrell", "Stark"]

由于 "Stark" 被重复,我想从数组 A 中删除它,我的结果应该是(保留顺序)

A: ["Targaryen", "Lannister", "Baratheon"]

我真的不关心第二个数组 B。核心 javascript 或 jQuery 中有什么东西可以帮助我吗? PS:不要发布带有 IF 语句的嵌套 for 循环。可能更聪明:)

【问题讨论】:

  • 我没有直接回答这个问题,但是如果你可以将数组转换为对象,你可以使用这个: if (B['Stark']) delete(A[ '斯塔克']);

标签: javascript jquery arrays nested-loops


【解决方案1】:

完整的 jquery 解决方案:

var a = ["Stark", "Targaryen", "Lannister", "Baratheon"];
var b = ["Greyjoy", "Tyrell", "Stark"];

var result = $.grep(a, function(n, i) {
    return $.inArray(n, b) < 0;
});

alert(result);​

【讨论】:

    【解决方案2】:

    我建议你使用 underscore.js 库,特别是差异函数。 http://underscorejs.org/#difference

    _.difference([1, 2, 3, 4, 5], [5, 2, 10]);
    => [1, 3, 4]
    

    这个库中还有其他有用的工具。

    【讨论】:

    • 我的项目中已经有了几个 jQuery 库。现在真的不想再添加了。不过谢谢!
    【解决方案3】:

    来自另一个answer

    Array.prototype.diff = function(a) {
        return this.filter(function(i) {return !(a.indexOf(i) > -1);});
    };
    
    ////////////////////  
    // Examples  
    ////////////////////
    
    [1,2,3,4,5,6].diff( [3,4,5] );  
    // => [1, 2, 6]
    
    ["test1","test2","test3","test4","test5","test6"].diff(["test1","test2","test3","test4"]);      
    // => ["test5", "test6"]
    

    【讨论】:

    • 谢谢。我应该看起来更努力。
    【解决方案4】:

    也许你喜欢

    $(function(){
       var A = ["Stark", "Targaryen", "Lannister", "Baratheon"];
       var B = ["Greyjoy", "Tyrell", "Stark"];
    
        $.each(A, function (key, value) {
            if($.inArray(value, B) > -1) {
                A.splice($.inArray(value, B), 1);
            }
        });
    
        document.write(A);
    });
    

    【讨论】:

      猜你喜欢
      • 2015-12-31
      • 1970-01-01
      • 2011-07-22
      • 2022-11-12
      • 2020-05-18
      • 2011-05-19
      • 2018-11-01
      • 1970-01-01
      • 2019-02-24
      相关资源
      最近更新 更多