Перебрать один из массивов, сравнивая каждый элемент с другим:
var matches = [],
i, j;
for (i=0; i < bar.length; i++)
if (-1 != (j = foo.indexOf(bar[i].string)))
matches.push(foo[j]);
// matches is ['one', 'three']
Очевидно, что если вы хотите, чтобы matches
содержал элементы из bar
вместо foo
, просто измените выражение .push()
на matches.push(bar[i]);
.
Конечно, вышеизложенное предполагает, что вы не заботитесь о поддержке старых браузеров, которые не поддерживают .indexOf()
для массивов, или что вы можете использовать shim .