1

私はPythonに少し慣れているので、javascriptに相当するものは次のとおりです。

In [25]: listA = [1,2,3,4,5,1,1]
In [26]: listB = [1,2]
In [27]: intersect = [element for element in listA if element in listB]
In [28]: intersect

Out[28]: [1, 2, 1, 1]

これは私が得ることができる最も近いものです:

var arrA = [1,1,3,4,5,5,6];
var arrB = [1,5];
var arrC = [];
$.each(arrA, function(i,d){ if (arrB.indexOf(d)> -1){arrC.push(d);} ;});

好ましい方法について何かコメントはありますか?私はこの答えを見ましたが、私が答えたかったものではありませんでした。

4

1 に答える 1

8

Array.filter次のように使用できます。

var aa = [1,2,3,4,5,1,1]
   ,ab = [1,2]
   ,ac = aa.filter(function(a){return ~this.indexOf(a);},ab);
//=> ac is now [1,2,1,1]

または拡張機能としてArray.prototype

Array.prototype.intersect = function(arr){
 return this.filter(function(a){return ~this.indexOf(a);},arr);
}
// usage
[1,2,3,4,5,1,1].intersect([1,2]); //=> [1,2,1,1]

メソッドについてはMDNを参照してくださいArray.filter(古いブラウザー用の shim も含まれています)。

于 2013-03-11T07:56:52.513 に答える