我正在寻找一种有效的方法来删除javascript数组中的所有元素,如果它们存在于另一个数组中.
// If I have this array:
var myArray = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
// and this one:
var toRemove = ['b', 'c', 'g'];
Run Code Online (Sandbox Code Playgroud)
我想对myArray进行操作以使其保持这种状态: ['a', 'd', 'e', 'f']
使用jQuery,我使用的是grep()和inArray(),效果很好:
myArray = $.grep(myArray, function(value) {
return $.inArray(value, toRemove) < 0;
});
Run Code Online (Sandbox Code Playgroud)
有没有一个纯粹的JavaScript方式来做到这一点没有循环和拼接?
让我们A和B两套.我正在寻找真正快速或优雅的方法来计算它们之间的集合差异(A - B或者A \B,取决于您的偏好).正如标题所说,这两个集合作为Javascript数组进行存储和操作.
笔记:
编辑:我注意到有关包含重复元素的集合的注释.当我说"集合"时,我指的是数学定义,这意味着(除其他外)它们不包含重复元素.
假设我有一个数组[34, 35, 45, 48, 49]和另一个数组[48, 55].我怎样才能得到一个结果数组[34, 35, 45, 48, 49, 55]?
比较两个数组并返回差异的最快/最好方法是什么?很像array_diff在PHP中.有一个简单的功能还是我将不得不创建一个通道each()?还是foreach循环?
_.intersection([], [])
Run Code Online (Sandbox Code Playgroud)
只适用于原始类型,对吧?
它不适用于对象.如何使它与对象一起工作(可能通过检查"Id"字段)?
var a = [ {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'} ]
var b = [ {'id': 1, 'name': 'jake' }, {'id': 9, 'name': 'nick'} ]
Run Code Online (Sandbox Code Playgroud)
在此示例中,结果应为:
_.intersection(a, b);
Run Code Online (Sandbox Code Playgroud)
[{'id':1,'name':'jake'}];
我正在寻找一个好的算法来获取一个数组中不是另一个数组中的元素的所有元素.所以给定这些数组:
var x = ["a","b","c","t"];
var ?????????y = [???????"d","a","t","e","g"];
Run Code Online (Sandbox Code Playgroud)
我想最终得到这个数组:
var z = ["d","e","g"];
Run Code Online (Sandbox Code Playgroud)
我正在使用jquery,所以我可以利用$.each()和$.inArray().这是我提出的解决方案,但似乎应该有更好的方法.
// goal is to get rid of values in y if they exist in x
var x = ["a","b","c","t"];
var y = ["d","a","t","e","g"];
var z = [];
$.each(y, function(idx, value){
if ($.inArray(value,x) == -1) {
z.push(value);
}
});
?alert(z); // should be ["d","e","g"]
Run Code Online (Sandbox Code Playgroud)
这是代码的实际应用.有任何想法吗?
我在javascript中有两个数组 - :
var array1 = ['12','1','10','19','100'];
var array2 = ['12','10','19'];
Run Code Online (Sandbox Code Playgroud)
我需要一个方法来从两个数组中获取唯一性并将它们放在array3中
Array3应该是 - :
var array3 = ['1','100'];
Run Code Online (Sandbox Code Playgroud)
感谢帮助.
我有两个对象数组:
我的表的元素不是原始值,而是复杂的对象.
array1 = [obj1,obj2,obj3,obj4]
array2 = [obj5,obj5,obj6,obj7]
Run Code Online (Sandbox Code Playgroud)
我想比较两个数组,看看数组2的元素已经存在于array1中,然后创建一个新的差异数组.
有什么建议吗?
我是JavaScript编程的新手,我有两个具有以下结构的对象数组:
myFirstObjArray = [{foo: 1, bar: 1}, {foo: 3, bar: 3}, {foo: 4, bar: 5}];
mySecondObjArray = [{foo: 2}, {foo: 4}, {foo: 5}];
Run Code Online (Sandbox Code Playgroud)
我需要获得两个包含key值的独立数组foo,第一个包含第一个数组但不在第二个数组中的数组,基于key的值,foo第二个包含mySecondObjArray但不在myFirstObjArray.
有没有办法做到这一点没有
for(i=0;i<myFirstObjArray.length;i++)
for(j=0;j<mySecondObjArray .length;j++)
{...build first array here}
for(i=0;i<mySecondObjArray .length;i++)
for(j=0;j<myFirstObjArray.length;j++)
{...build second array here}
Run Code Online (Sandbox Code Playgroud)
?也许我的问题是一个我没找到的重复问题,所以请保持温和.
预期产量:
firstArray = [{foo: 1}, {foo: 3}];
secondArray = [{foo: 2}, {foo: 5}];
Run Code Online (Sandbox Code Playgroud) 我需要创建一个算法,它将(有效地)获取一个旧数组和一个新数组,并让我回复两者之间的变化(添加了哪些项目,删除了哪些项目).它恰好需要使用JavaScript(在浏览器中运行),但算法比语言更重要.
这就是我提出的:http://jsbin.com/osewu3/13.任何人都可以看到任何问题/建议任何改进?
谢谢!
代码清单:
function diff(o, n) {
// deal with empty lists
if (o == undefined) o = [];
if (n == undefined) n = [];
// sort both arrays (or this won't work)
o.sort(); n.sort();
// don't compare if either list is empty
if (o.length == 0 || n.length == 0) return {added: n, removed: o};
// declare temporary variables
var op = 0; var np = 0;
var a = []; var r …Run Code Online (Sandbox Code Playgroud)