js数据处理

新手上路,请多包涵
[{
  'id': 92298,
  'fieldName': '工商注册号',
  'isLine': false
}, {
  'id': 92299,
  'fieldName': '注册资本',
  'isLine': true
}, {
  'id': 92300,
  'fieldName': '注册时间',
  'isLine': false
}, {
  'id': 92301,
  'fieldName': '注册地点',
  'isLine': false 
}, {
  'id': 92302,
  'fieldName': '公司注册名',
  'isLine': false 
}, {
  'id': 92303,
  'fieldName': '法人代表',
  'isLine': false 
}]
  1. 将数组分割俩俩一对数组
  2. 如果isLine为true,独立存放一个数组

需要结果:

{
    [{
      'id': 92298,
      'fieldName': '工商注册号',
      'isLine': false
    }],
    [{
      'id': 92299,
      'fieldName': '注册资本',
      'isLine': true
    }],
    [{
      'id': 92300,
      'fieldName': '注册时间',
      'isLine': false
    }, {
      'id': 92301,
      'fieldName': '注册地点',
      'isLine': false 
    }],
    [{
      'id': 92302,
      'fieldName': '公司注册名',
      'isLine': false 
    }, {
      'id': 92303,
      'fieldName': '法人代表',
      'isLine': false 
    }]
}
阅读 1.8k
3 个回答
    let dataList = [{
        'id': 92298,
        'fieldName': '工商注册号',
        'isLine': false
    }, {
        'id': 92299,
        'fieldName': '注册资本',
        'isLine': true
    }, {
        'id': 92300,
        'fieldName': '注册时间',
        'isLine': false
    }, {
        'id': 92301,
        'fieldName': '注册地点',
        'isLine': false
    }, {
        'id': 92302,
        'fieldName': '公司注册名',
        'isLine': false
    }, {
        'id': 92303,
        'fieldName': '法人代表',
        'isLine': false
    }]

    let resultArr = [];
    let currArr = [];
    dataList.forEach(item => {
        if(item.isLine || currArr.length == 2) {
            resultArr.push(currArr)
            currArr = [];
        }

        if(item.isLine) {
            resultArr.push([item])
        } else {
            currArr.push(item);
        }
    })
    resultArr.push(currArr)

虽然不华丽,但有效

var dataList = [{
  'id': 92298,
  'fieldName': '工商注册号',
  'isLine': false
}, {
  'id': 92299,
  'fieldName': '注册资本',
  'isLine': true
}, {
  'id': 92300,
  'fieldName': '注册时间',
  'isLine': false
}, {
  'id': 92301,
  'fieldName': '注册地点',
  'isLine': false 
}, {
  'id': 92302,
  'fieldName': '公司注册名',
  'isLine': false 
}, {
  'id': 92303,
  'fieldName': '法人代表',
  'isLine': false 
}];

var resultList = dataList.reduce((resultList,current)=>{
    let isLine = current['isLine'];
    let lastList = resultList[resultList.length - 1];
    let lastListHasIsLine = (lastList||[]).find((item)=>item['isLine']);
    if(!lastList||lastList.length>=2||isLine||lastListHasIsLine){
        lastList = [current];
        resultList.push(lastList);
    }else{
        lastList.push(current);
    }
    return resultList;
},[]);

console.log('resultList:',resultList);
var data = [{
  'id': 92298,
  'fieldName': '工商注册号',
  'isLine': false
}, {
  'id': 92299,
  'fieldName': '注册资本',
  'isLine': true
}, {
  'id': 92300,
  'fieldName': '注册时间',
  'isLine': false
}, {
  'id': 92301,
  'fieldName': '注册地点',
  'isLine': false 
}, {
  'id': 92302,
  'fieldName': '公司注册名',
  'isLine': false 
}, {
  'id': 92303,
  'fieldName': '法人代表',
  'isLine': false 
}];

data.reduce((res, v) => {
    const prev = res[res.length-1];
    const prevItem = prev[prev.length-1];
    if(prevItem && prevItem.isLine !== v.isLine) {
        res.push([v])
    } else {
        prev.push(v)
    }
    return res;
}, [[]])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题