JavaScript 数组处理

新手上路,请多包涵
var arr = ['aaa', 'ccc']
var data = {
      aaa: [{count: 31, date: '202010'}, {count: 32, date: '202011'}, {count: 33, date: '202012'}, {count: 34, date: '202013'}],
      bbb: [{count: 10, date: '202010'}, {count: 12, date: '202011'}, {count: 13, date: '202012'}, {count: 14, date: '202013'}],
      ccc: [{count: 21, date: '202010'}, {count: 22, date: '202011'}, {count: 23, date: '202012'}, {count: 24, date: '202013'}],
    }
最后要的结果
    // arr = [
    //   {aaa:31, ccc:21, date: 202010},
    //   {aaa:32, ccc:22, date: 202011},
    //   {aaa:33, ccc:23, date: 202012},
    //   {aaa:34, ccc:24, date: 202013}
    // ] 
阅读 1.5k
2 个回答

代码实现:
image.png


测试:

var arr = ['aaa', 'ccc']
var data = {
      aaa: [{count: 31, date: '202010'}, {count: 32, date: '202011'}, {count: 33, date: '202012'}, {count: 34, date: '202013'}],
      bbb: [{count: 10, date: '202010'}, {count: 12, date: '202011'}, {count: 13, date: '202012'}, {count: 14, date: '202013'}],
      ccc: [{count: 21, date: '202010'}, {count: 22, date: '202011'}, {count: 23, date: '202012'}, {count: 24, date: '202013'}],
    }
console.log(JSON.stringify(getResult(data, arr), null, 2))

输出:

[
  {
    "date": "202010",
    "aaa": 31,
    "ccc": 21
  },
  {
    "date": "202011",
    "aaa": 32,
    "ccc": 22
  },
  {
    "date": "202012",
    "aaa": 33,
    "ccc": 23
  },
  {
    "date": "202013",
    "aaa": 34,
    "ccc": 24
  }
]
function handler(arr, data) {
    let map = {};
    for (let i = 0; i < arr.length; i++) {
        const list = data[arr[i]];
        for (let j = 0; j < list.length; j++) {
            const item = list[j];
            if (map[item.date]) {
                map[item.date][arr[i]] = item.count;
            } else {
                map[item.date] = {
                    date: item.date,
                    [arr[i]]: item.count
                }
            }
        }
    }
    console.log(Object.values(map));
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题