js对数组的处理?

list1:[{name: '营商环境', value: 10},{name: '住保房管', value: 9},{name: '疫情防控', value: 8}]
list2:[{name: '劳动和社会保障', value: 10},{name: '城市管理', value: 7},{name: '公共服务', value: 6},{name: '环境保护', value: 1}]
list3:[{name: '大气污染', value: 3},{name: '健康码', value: 2}]

以上数组处理得到:
list:[{name: '营商环境-劳动和社会保障-大气污染', value: 23}, {name: '住保房管-城市管理-健康码', value: 18}, {name: '疫情防控-公共服务', value: 14}, {name: '环境保护', value: 1}]

阅读 1.2k
2 个回答

兼容多个list

function integrateData(...params) {
  const maxLength = Math.max(...params.map(param => param.length));
  return new Array(maxLength).fill().map(
    (_, index) => {
      const item = params.reduce((target, cur) => {
        const _cur = cur[index];
        if (_cur) {
          target.name.push(_cur.name);
          target.value += _cur.value;
        }
        return target;
      }, { name: [], value: 0 })
      return {
        name: item.name.join("-"),
        value: item.value  
      }
    }
  );
}

console.log(integrateData(list1, list2));
// [
//   { name: '营商环境-劳动和社会保障', value: 20 },
//   { name: '住保房管-城市管理', value: 16 },
//   { name: '疫情防控-公共服务', value: 14 },
//   { name: '环境保护', value: 1 }
// ]

console.log(integrateData(list1, list2, list3));
// [
//   { name: '营商环境-劳动和社会保障-大气污染', value: 23 },
//   { name: '住保房管-城市管理-健康码', value: 18 },
//   { name: '疫情防控-公共服务', value: 14 },
//   { name: '环境保护', value: 1 }
// ]
const list1 = [{name: '营商环境', value: 10},{name: '住保房管', value: 9},{name: '疫情防控', value: 8}];
const list2 = [{name: '劳动和社会保障', value: 10},{name: '城市管理', value: 7},{name: '公共服务', value: 6},{name: '环境保护', value: 1}];
const list3 = [{name: '大气污染', value: 3},{name: '健康码', value: 2}];

const maxLength = Math.max(list1.length, list2.length, list3.length);
const res = [];

for(let i = 0; i < maxLength; i++) {
    res.push({
        name: [list1[i]?.name, list2[i]?.name, list3[i]?.name].filter(Boolean).join('-'),
        value: (list1[i]?.value || 0) + (list2[i]?.value || 0) + (list3[i]?.value || 0)
    });
}

console.log(res);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题