Вы можете привести в порядок все объекты, получить уникальный JSON и затем преобразовать строки обратно в объекты.
var array = [{ state: "FL" }, { state: "NY" }, { state: "FL" }, { gender: "Male" }, { state: "NY" }, { gender: "Female" }, { gender: "Female" }, { year: "1990" }],
unique = Array.from(
new Set(array.map(o => JSON.stringify(o))),
s => JSON.parse(s)
);
console.log(unique);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Если у вас есть более одного ключа в объекте и потому, что если у вас есть объекты, ключи которых находятся в другом порядке, я предлагаю вам сначала получить записиСортируйте этот массив, зафиксируйте его для набора, а затем верните новые объекты.
var array = [{ foo: 42, state: "FL" }, { state: "FL", foo: 42 }, { state: "FL" }, { state: "NY" }, { state: "FL" }, { gender: "Male" }, { state: "NY" }, { gender: "Female" }, { gender: "Female" }, { year: "1990" }],
unique = Array.from(
new Set(array.map(o => JSON.stringify(Object.entries(o).sort(([a], [b]) => a.localeCompare(b))))),
s => Object.assign({}, ...JSON.parse(s).map(([k, v]) => ({ [k]: v })))
);
console.log(unique);
.as-console-wrapper { max-height: 100% !important; top: 0; }