我有一个数组:
var objects = [
{product:'123', options:{cap:'', fort:'', count:1}},
{product:'123', options:{cap:'', fort:'', count:1}},
{product:'12', options:{cap:'', fort:'', count:1}},
{product:'1234', options:{cap:'123', fort:'', count:1}},
{product:'1234', options:{cap:'', fort:'', count:1}}
];
我需要以这种方式过滤这个数组:
(product === product && options !== options) || (product !== product && options == options)
这意味着该数组应如下所示:
var objects = [
{product:'123', options:{cap:'', fort:'', count:1}},
{product:'1234', options:{cap:'123', fort:'', count:1}},
{product:'12', options:{cap:'', fort:'', count:1}},
{product:'1234', options:{cap:'', fort:'', count:1}}
];
答案 0 :(得分:0)
尝试这种(不是那么有效但简单)的方法
objects.map((s)=> JSON.stringify(s)).filter( (s,i,a)=> a.indexOf(s,i+1) == -1 ).map((s)=> JSON.parse(s));
<强>演示强>
var objects = [
{product:'123', options:{cap:'', fort:'', count:1}},
{product:'123', options:{cap:'', fort:'', count:1}},
{product:'12', options:{cap:'', fort:'', count:1}},
{product:'1234', options:{cap:'123', fort:'', count:1}},
{product:'1234', options:{cap:'', fort:'', count:1}}
];
objects = objects.map((s)=> JSON.stringify(s)).filter( (s,i,a)=> a.indexOf(s,i+1) == -1 ).map((s)=> JSON.parse(s));
console.log( objects );
&#13;
解释
JSON.stringify
注意强>
如果你的对象&#39;这个答案不会起作用。密钥的顺序不同,对象中的所有function
值都会在stringify
和parse
之后删除。