对象表 - uniq

时间:2016-03-10 14:52:00

标签: javascript arrays object underscore.js

我有一张桌子:

[ 
   { somename1: 
       { 
         field1: 'field1',
         field2: 'field2',
         field3: [Object]
       } 
   },
   { somename2: 
       { 
         field1: 'field1',
         field2: 'field2',
         field3: [Object]
       }
    },
    { somename1: 
       { 
         field1: 'field1',
         field2: 'field2',
         field3: [Object]
       } 
   } 
]

我想获得的是:

[
   { somename1: 
     { 
       field1: 'field1',
       field2: 'field2',
       field3: [Object]
     } 
   },
   { somename2: 
     { 
       field1: 'field1',
       field2: 'field2',
       field3: [Object]
     }
   }
]

我已经尝试过使用_.uniq(table)和一般的下划线,但我失败了。你知道我该怎么办吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

如果没有下划线,你可以很容易地做到这一点:

var o = [ { somename1: 
     { field1: 'field1',
       field2: 'field2',
       field3: [Object]
     } 
   },
   { somename2: 
     { field1: 'field1',
       field2: 'field2',
       field3: [Object]
     }
   },
   { somename1: 
     { field1: 'field1',
       field2: 'field2',
       field3: [Object]
     } 
} ];

var tmp = [], res = [];
o.forEach(function(a, i) {
    var key = Object.keys(a)[0];
    if (tmp.indexOf(key) < 0) {
        tmp.push(key);
        res.push(o[i]);
    }
});

console.log(res);

答案 1 :(得分:0)

以下是使用下划线的解决方案:

var result = _.uniq(data, function(item){
    return _.first( _.keys(item));
})