Это, вероятно, самый простой метод, если не самый медленный.
var o = { PropA: 1, PropB: 2 };
var a = [1, 2, 3, 4, o];
var b = [2, 3, 4, 1];
var c = a.filter(function(value, index, obj) {
return b.indexOf(value) > -1;
});
if (c.length !== a.length) {
throw new Error("Array b is missing some elements!");
}
indexOf
будет проверять только то, что они ссылаются на один и тот же объект. Если вы хотите проверить эквивалентность значений, вам придется глубоко сравнить свойства или использовать JSON.stringify
, как вы упомянули в своем вопросе.