从一个数组中移除字符串(如果存在于另一个数组)
Remove Strings from one Array if present in another
这是一个相当基本的问题,但我正在寻找最佳解决方案。我有两个javascript字符串数组。比方说
A: ["Stark", "Targaryen", "Lannister", "Baratheon"]
B: ["Greyjoy", "Tyrell", "Stark"]
由于"Stark"重复,我想将其从数组A中删除,我的结果应该是(保留排序)
A: ["Targaryen", "Lannister", "Baratheon"]
我真的不喜欢第二个数组B。核心javascript或jQuery中有什么对我有帮助吗?PS:不要发布带有IF语句的嵌套for循环。可能更聪明:)
完整的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);
我建议您使用underscore.js库,特别是difference函数。http://underscorejs.org/#difference
_.difference([1, 2, 3, 4, 5], [5, 2, 10]);
=> [1, 3, 4]
这个库中还有其他有用的工具。
来自另一个答案
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"]
也许你想要
$(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);
});
相关文章:
- 如果在代码末尾进行求值,jQuery-console.log将提供空数组
- 如果数组仍在执行,async.forEach()将运行我添加到数组中的新元素
- underline-js:将键对象与数组键对象进行比较,如果存在,则移除现有的添加新的
- Javascript:如果数组有对象或不为空
- 根据条件将函数放入数组中(如果选中复选框)
- 如果输入包含数组中的任何单词
- 如果值包含数组中的一个或多个
- JavaScript 如果数组包含名称,则不要这样做
- 如果我知道另一个值,请在多维数组中查找一个值
- 如果数组包含特定值,则返回该值的完整“内容”
- 如果在数组中发现重复,则必须通过纯javascript添加带关键字的索引
- 如果's的第一个非空数组
- 如果字符串中存在错误,请检查数组中的char
- 如果我只想从数组中打印任何一个元素.任何数组.那么代码会是什么
- 从数组中删除值,用新的数组总数更新html或'$'如果没有总计
- 如果数组中的值为false,则破坏Promise
- MD 数组:如果未找到值,则添加其他数组
- Rethinkdb追加到数组如果存在
- Javascript:循环数组.如果找到匹配项,则推送到数组,如果没有,则创建新的innerarray
- Javascript字符串到数组(如果字符串没有任何空格)