繁体   English   中英

如何通过下划线获取对象数组的唯一键?

[英]How to get the unique keys of an array of object by underscore?

我有一个对象array ,并希望通过下划线获取唯一键,我该怎么做?

Array[ Object{a: 1, b: 2}, Object{b: 3, c: 4, d: 5} ]

我想得到:

Array[ "a", "b", "c", "d" ]

另外一个选项:

keys = _.keys(_.extend.apply({}, array))

下划线解决方案:

_.chain(xs).map(_.keys).flatten().unique().value();

演示: http //jsbin.com/vagup/1/edit

使用Spread运算符的 纯ES6解决方案

Object.keys({...objA, ...objB});

背景

它获取项目的属性( objAobjB )并“解开”它们,然后它将这些属性组合成一个对象(参见{ } )。 然后我们取结果的关键。

TypeScript转换输出(ES5):

// Helper function
var __assign = (this && this.__assign) || Object.assign || function(t) {
    for (var s, i = 1, n = arguments.length; i < n; i++) {
        s = arguments[i];
        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
            t[p] = s[p];
    }
    return t;
};

// Compile output
// Note that it's NOT lodash or underscore but the helper function from above
Object.keys(__assign({}, objA, objB));

使用_.keys()获取对象中的所有键

var result = [];
_.each(obj, function(prop){
   var temp = _.keys(prop);
   _.each(temp, function(value){
      result.push(value);
   })
});
console.log(result);

_.contains([],value)检查值是否在数组中退出并返回'true'(如果存在); 'false',否则。以下是用于消除重复键,然后将键推送到结果数组。

var result = [];
_.each(obj, function(prop){
    var temp = _.keys(prop);
    _.each(temp, function(value){
       var flag = _.contains(result, value);
       if(!flag){
         result.push(value);
       }
    });
});
console.log(result);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM