由于数据是字符串,并且字符串没有逗号,因此可以使用动态RegExp避免所有用户域迭代:
var refArray = ['India','Pakistan','Nepal','Bhutan','SreeLanka','Singapore','Thailand','China','Russia']var beenThere = ['Russia','Bhutan','India'];(","+refArray+",").match(RegExp(",("+beenThere.join("|")+"),","g")).join(",").split(/,+/).slice(1,-1); // == ["India", "Bhutan", "Russia"]这样做很不错,因为它不需要[]
.indexOf(),因此可以在较旧的浏览器中使用。如果数据有逗号,则可以使用除逗号以外的其他分隔符,并带有一些较丑陋的代码…
或者,使用过滤器进行迭代,但使用本机方法而不是用户界面函数:
var refArray = ['India','Pakistan','Nepal','Bhutan','SreeLanka','Singapore','Thailand','China','Russia']var beenThere = ['Russia','Bhutan','India'];refArray.filter(/./.test, RegExp("("+beenThere.join("|")+")","g"));// == ["India", "Bhutan", "Russia"]它们的执行速度可能比indexOf()快,但是排序是一个怪异的操作,为幕后优化提供了很多机会,因此结果可能会有所不同。



