美文网首页
如何在 javascript 中不使用 loadsh 对数据进

如何在 javascript 中不使用 loadsh 对数据进

作者: 有情怀的程序猿 | 来源:发表于2020-10-13 10:35 被阅读0次

    原文地址: How to groupBy in JavaScript
    对数据进行分组是js中一个基本用法, 所以我们没必要使用lodash
    例如: 我们希望通过以下数组结构返回出一个类似下面示例的数据结构

    const users = [
      { name: 'Jim', color: 'blue' },
      { name: 'Sam', color: 'blue' },
      { name: 'Eddie', color: 'green' },
    ];
     
    const usersByColor = // TODO:  数组集合
     
    console.log(usersByColor);
     
    // 根据上面的 `users` 数据结构,我希望返回的数据是这个格式的: 
    // {
    //   blue: [{
    //     { name: 'Jim', color: 'blue' },
    //     { name: 'Sam', color: 'blue' },
    //   }],
    //   green: [{ name: 'Eddie', color: 'green' }]
    // }
    

    我门可以使用 js 中的 reduce 来做处理

    const result = users.reduce((acc, value) => {
        console.log('-----', acc,value)
        return acc
    },{})
    
    
    

    我们先会使用{}作为 acc 然后 在对 users 的每一个 item 做处理;

    const usersByColor = users.reduce((acc, value) => {
      if (!acc[value.color]) {
        acc[value.color] = [];
      }
     
      // TODO: implement grouping
      acc[value.color].push(value);
    
      return acc;
    }, {});
    

    然后在每一循环中都查看对象中有没有 以 value.color 值为键名的元素,如果没有则新建且值为 [];
    如果已经有了的话则把整个对象赋值给 acc[value.color]

    相关文章

      网友评论

          本文标题:如何在 javascript 中不使用 loadsh 对数据进

          本文链接:https://www.haomeiwen.com/subject/pczmpktx.html