es6 数组的工具类

   根据Es6中map和Set的特性,实现了对array的分组和转换操作。

   


exports.mapToObj = function (strMap) {
  let obj = Object.create(null);
  for (let [k,v] of strMap) {
    obj[k] = v;
  }
  return obj;
};

exports.objToMap = function (obj) {
  let strMap = new Map();
  for (let k of Object.keys(obj)) {
    strMap.set(k, obj[k]);
  }
  return strMap;
};
exports.groupBy = function (values, key) {
  let map = new Map();
  for (let value of values) {
    if (!value.hasOwnProperty(key)) {
      return [];
    }
    let groupkey = value[key];
    let groupSet = map.get(groupkey) || new Set();
    groupSet.add(value);
    map.set(groupkey, groupSet);

  }
  return map;
};

exports.distinct=function (values) {
  if(!Array.isArray(values))
    throw new Error("invalid param");
  return [...new Set(values)];
};

如上,这样利用es6的特性,不用再引入loadash等类库,需要其他功能均可方便的实现。

发句感慨,写代码就像做一件艺术品,要有所追求,不要草草了事,有匠心也有意思。

原文地址:https://www.cnblogs.com/ryansecreat/p/6126361.html