最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Filter one array of elements using another array - Stack Overflow

programmeradmin0浏览0评论

I'm a bit more familiar with python, so what is the javascript equivalent of:

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]

This is the closest I can get:

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);} ;});

Any ments on preferred methods? I saw this answer, but it was not exactly what I wanted to answer.

I'm a bit more familiar with python, so what is the javascript equivalent of:

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]

This is the closest I can get:

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);} ;});

Any ments on preferred methods? I saw this answer, but it was not exactly what I wanted to answer.

Share Improve this question edited May 23, 2017 at 12:24 CommunityBot 11 silver badge asked Mar 11, 2013 at 7:20 gusgus 4071 gold badge5 silver badges17 bronze badges 3
  • 1 this one does seem to work, so what the question is? – Igor Dymov Commented Mar 11, 2013 at 7:23
  • I'm new to javascript, just thought I'd see what people have to say. – gus Commented Mar 11, 2013 at 7:35
  • If it works and you want to know whether there's something better, you're better off at codereview.stackexchange.. Also, this isn't "pure" JavaScript ($.each is from the jQuery library). If you're new to JavaScript don't use jQuery at first. First get used to the language and see what isn't possible in JavaScript, then start to use a library to get rid of the limitations. – Zeta Commented Mar 11, 2013 at 7:39
Add a ment  | 

1 Answer 1

Reset to default 8

You could use Array.filter like this:

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]

Or as extension for 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]

See MDN for the Array.filter method (also contains a shim for older browsers)

发布评论

评论列表(0)

  1. 暂无评论