常用数据类型工具包

18 篇文章 0 订阅

1. lodash里面的方法 uniqBy : 根据对象的某个字段进行去重

_.uniqBy([2.1, 1.2, 2.3], Math.floor);
// => [2.1, 1.2]
 
// The `_.property` iteratee shorthand.
_.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
// => [{ 'x': 1 }, { 'x': 2 }]

2. 处理菜单的数据类型,获取所有的子菜单数组。

  getChildMenu(menus: MenuInfo[]) {
    menus.forEach(item => {
      if (item.children) {
        this.getChildMenu(item.children);
      } else {
        this.childMenus.push(item);
      }
    });
    return this.childMenus;
  }

 

3. 数组对象根据某个值相同合并分组

原文链接:数组对象根据某个值相同合并分组_新白的博客-CSDN博客

var arr = [
    {"id":"1001","name":"值1","value":"111"},
    {"id":"1001","name":"值1","value":"11111"},
    {"id":"1002","name":"值2","value":"25462"},
    {"id":"1002","name":"值2","value":"23131"},
    {"id":"1002","name":"值2","value":"2315432"},
    {"id":"1003","name":"值3","value":"333333"}
];
 
var map = {},
    dest = [];
for(var i = 0; i < arr.length; i++){
    var ai = arr[i];
    if(!map[ai.id]){
        dest.push({
            id: ai.id,
            /*name: ai.name,*/
            data: [ai]
        });
        map[ai.id] = ai;
    }else{
        for(var j = 0; j < dest.length; j++){
            var dj = dest[j];
            if(dj.id == ai.id){
                dj.data.push(ai);
                break;
            }
        }
    }
}
 
console.log(dest);

 延申效果:

// 对所有的数组对象中,根据accountCode进行分组
getBankStatementData(arr: UploadAccountEdit[]) {
    const mapValue = {}; 
    const value = [];
    for (const firstValue of arr) {
      if (!mapValue[firstValue.accountCode]) {
        value.push({
          accountCode: firstValue.accountCode,
          accountName: firstValue.accountName,
          bankName: firstValue.bankName,
          currency: firstValue.currency,
          fileList: [firstValue.fileList[0]],
        });
        mapValue[firstValue.accountCode] = firstValue;
      } else {
        for (const secondValue of value) {
          if (secondValue.accountCode === firstValue.accountCode) {
            secondValue.fileList.push(firstValue.fileList[0]);
            break;
          }
        }
      }
    }
    return value;
  }

 函数封装:

//arr为传入函数的目标数组,根据传入的key重组数组
function filterData(key,arr){
	let map = {},
    dest = [];
for(var i = 0; i < arr.length; i++){
    var ai = arr[i];
    if(!map[ai[key]]){
 
        dest.push({
            [key]: ai[key],
            data: [ai]
        });
        map[ai[key]] = ai;
    }else{
        for(var j = 0; j < dest.length; j++){
            var dj = dest[j];
            if(dj[key] == ai[key]){
                dj.data.push(ai);
                break;
            }
        }
    }
}
console.log(dest);
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值