2012-04-09 62 views
2

我必须在JavaScript中过滤掉某个数组中的某些元素,并想到为此使用underscore.js。由于我对它很陌生,有些帮助表示赞赏。请参考下面的代码,我必须找到A-B并将结果赋给C。 underscore.js是否有任何方便的方法来做到这一点?使用underscore.js从两个数组中查找A - B

function testUnderScore(){ 
    alert("underscore test"); 
    var a = [84, 99, 91, 65, 87, 55, 72, 68, 95, 42]; 
    var b = [ 87, 55, 72,42 ,13]; 
    var c = []; 

    alert(c); 
} 
+0

我刚发现出来,C = _.without(A,B);将会是A-B,我也会检查下面的答案并接受它们。 – cherit 2012-04-09 08:35:09

+1

注意:您最好在文本中使用正确的语法['A \ B'](http://en.wikipedia.org/wiki/Setminus#Relative_complement)。 – kay 2012-04-09 08:43:57

回答

18

利用difference方法:

var c = _.difference(a, b); 

http://documentcloud.github.com/underscore/#difference

+0

与_.without(a,b)不同。 ? – cherit 2012-04-09 08:37:49

+0

@tito'.without()'把第一个参数作为一个数组,然后是整数,这里给出你的情况,可能不是你需要的那个 – 2012-04-09 08:46:54

1

我必须要找到A-B和结果分配到C。 underscore.js 有任何便利的方法来做到这一点?

是的,你可以使用difference[View Docs]方法:

var c = _.difference(a, b); 
+0

给对象找不到? _.diff存在方法存在吗? – cherit 2012-04-09 08:37:18

+2

@tito:使用'difference'而不是'diff'。他们已经在最新版本中更改了方法名称。 – Sarfraz 2012-04-09 08:39:06

0

如何:

var a = [1, 2, 5, 6], b = [6], c; 

c = a.filter(
    function (aItem) { 
     return !(~b.indexOf(aItem)); 
    } 
); 

console.log(c); 

+0

抱歉,修正了错误; 〜(-1)上给出0,所以indexOf是虚假的((-1)不是虚假值) – 2012-04-09 08:53:29

相关问题