相关疑难解决方法(0)

Javascript数组:删除另一个数组中包含的所有元素

我正在寻找一种有效的方法来删除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方式来做到这一点没有循环和拼接?

javascript arrays jquery

185
推荐指数
12
解决办法
14万
查看次数

使用Javascript数组计算集合差异的最快或最优雅的方法是什么?

让我们AB两套.我正在寻找真正快速或优雅的方法来计算它们之间的集合差异(A - B或者A \B,取决于您的偏好).正如标题所说,这两个集合作为Javascript数组进行存储和操作.

笔记:

  • 壁虎特有的技巧是可以的
  • 我更喜欢坚持本机功能(但如果速度更快,我会对轻量级库开放)
  • 我见过,但没有经过测试,JS.Set(见前一点)

编辑:我注意到有关包含重复元素的集合的注释.当我说"集合"时,我指的是数学定义,这意味着(除其他外)它们不包含重复元素.

javascript arrays set-difference

90
推荐指数
10
解决办法
7万
查看次数

在JavaScript中获得两个数组的联合

假设我有一个数组[34, 35, 45, 48, 49]和另一个数组[48, 55].我怎样才能得到一个结果数组[34, 35, 45, 48, 49, 55]

javascript arrays

62
推荐指数
8
解决办法
10万
查看次数

比较2个返回差异的数组

比较两个数组并返回差异的最快/最好方法是什么?很像array_diff在PHP中.有一个简单的功能还是我将不得不创建一个通道each()?还是foreach循环?

javascript arrays jquery array-difference

60
推荐指数
3
解决办法
11万
查看次数

如何在对象上使用下划线的"交集"?

_.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'}];

javascript underscore.js

42
推荐指数
3
解决办法
4万
查看次数

Javascript算法查找数组中不在另一个数组中的元素

我正在寻找一个好的算法来获取一个数组中不是另一个数组中的元素的所有元素.所以给定这些数组:

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 arrays algorithm jquery

29
推荐指数
5
解决办法
2万
查看次数

从两个数组中获取唯一值并将它们放在另一个数组中

我在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)

感谢帮助.

javascript arrays

24
推荐指数
3
解决办法
5万
查看次数

Lodash/javascript:比较两个集合并返回差异

我有两个对象数组:

我的表的元素不是原始值,而是复杂的对象.

array1 = [obj1,obj2,obj3,obj4]
array2 = [obj5,obj5,obj6,obj7]
Run Code Online (Sandbox Code Playgroud)

我想比较两个数组,看看数组2的元素已经存在于array1中,然后创建一个新的差异数组.

有什么建议吗?

javascript arrays javascript-objects lodash

21
推荐指数
3
解决办法
4万
查看次数

JavaScript从对象数组中获取不在另一个对象数组中的元素

我是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 arrays javascript-objects

20
推荐指数
2
解决办法
1961
查看次数

在两个数组之间进行更改的算法

我需要创建一个算法,它将(有效地)获取一个旧数组和一个新数组,并让我回复两者之间的变化(添加了哪些项目,删除了哪些项目).它恰好需要使用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)

javascript arrays algorithm performance

15
推荐指数
1
解决办法
6850
查看次数