前端练习21 后端数据处理

知识点

  1. 分析数据结构
  2. 数组的reduce方法

题目

从某数据库接口得到如下值:

{
  rows: [
    ["Lisa", 16, "Female", "2000-12-01"],
    ["Bob", 22, "Male", "1996-01-21"]
  ],
  metaData: [
    { name: "name", note: '' },
    { name: "age", note: '' },
    { name: "gender", note: '' },
    { name: "birthday", note: '' }
  ]
}

rows是数据,metaData是对数据的说明。现写一个函数parseData,将上面的对象转化为期望的数组:

[
  { name: "Lisa", age: 16, gender: "Female", birthday: "2000-12-01" },
  { name: "Bob", age: 22, gender: "Male", birthday: "1996-01-21" },
]

实现

首先分析一下结果,是一个数组,数组的长度和rows的长度一致,数组的成员是一个对象,对象的keymetaData中数组成员的name属性,对象的valuerows的数组成员中的数组对应序列的值

那么我们只需要对rows进行map,里面每一项是row,再对row遍历,得出一个累加的对象,用reduce最合适了

const parseData = (data) => {
  const { rows, metaData } = data;
  if (!Array.isArray(rows) || !Array.isArray(metaData) || rows.length === 0 || metaData.length === 0) {
    return []
  }
  return rows.map(row => {
    return row.reduce((total, current, currentIndex) => {
      const key = metaData[currentIndex].name;
      total[key] = current;
      return total
    }, {})
  });
};

参考

  • #32 后端数据处理@ScriptOJ

你可能感兴趣的:(前端练习)