首页 > 开发 > JS > 正文

如何判断数组对象里面有相同的元素

2017-09-05 05:51:31  来源:网友分享
var a = [{des:"qwe",b:"reg"},{des:"vfg",b:"fgdfd"},{des:"qwe",b:"fdfd"},{des:"vfg",b:"fdfd"}]

怎么样判断 a[i].des在整个数组对象中有相同的des对应的值?

解决方案

重组一下,建立一个 des => model[] 的映射表

var a = [    { des: "qwe", b: "reg" },    { des: "vfg", b: "fgdfd" },    { des: "qwe", b: "fdfd" }];var map = a.reduce((all, m) => {    let list = all.get(m.des);    if (!list) {        list = [];        all.set(m.des, list);    }    list.push(m);    return all;}, new Map());Array.from(map.entries())    // 这里过滤掉 list 只有一个元素的,剩下的就是有重复的    .filter(([des, list]) => list.length > 1)    .forEach(([des, list]) => {        values = list.map(m => m.b);        console.log(des, values);    });