处理数组中的数据,有没有更高效优雅的写法?

名字不能缺
  • 144
const menuList=[{
    text:"狗狗",
    icon:"",
    type:"gougou",
    status:fasle,
    },{
    text:"猫猫",
    icon:"",
    type:"maomao",
    status:fasle,
    }]
let dataSource = [];
menuList.map((item, index) =>
      dataSource.push({
        key: item.type,
        rank: index + 1,
        text: item.text,
        type: item.type,
        icon: item.icon,
        status: item.status
      })
    );

想得到处理后的数据,返回个新的数组dataSource,上面是基本的写法了,有没有其他的方法?

回复
阅读 1.3k
3 个回答
    let dataSource = menuList.map((item, index) => {
        item.key = item.type + 1;
        item.rank = index + 1;
        ...
        return item;
    });
littleLyon
  • 7.8k

map 本来就是描述映射关系的,所以这里不需要新建一个 dataSource,直接在 map 的回调函数中返回映射后的对象即可,这样 map 对数组进行遍历后会返回一个新的数组,这已经算是很不错的写法了。

另外,如果映射关系有很多,可能会链式调用若干 map 方法,比如:

arr.map(func1).map(func2).map(func3)

这种情况可以利用 compose 来提高一些效率,如下:

arr.map(compose(func3, func2, func1))
hold_baby
  • 3k
let dataSource = menuList.map((item, index) => {
      item = {
        key: item.type,
        rank: index + 1,
        text: item.text,
        type: item.type,
        icon: item.icon,
        status: item.status
      };
      return item
    });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏