为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 lodash keyBy 创建哈希对象?

如何使用 lodash keyBy 创建哈希对象?

POPMUISE 2022-10-08 10:01:18
我有这样的学校数据:[  {    "details": {      "campus": [        {          "address": "115-119...",          "campusName": "blah",          "email": "blah",        }      ],      "colour": "#640E27",      "schoolCode": "8383"    },    "enrolled": true,    "id": "8383"  }]我需要创建一个以学校 ID 作为键,以学校颜色作为其值的哈希    {'8383' : '#640E27'}我正在使用 lodash  const hash = keyBy(action.payload, 'id');  const reducedHash = pickBy(hash, item => item.details.colour);但是,输出仍然具有整个对象的值,而不仅仅是显示颜色值。如何实现 id 和 color 作为 hash 的键值?
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

lodash keyBy 可能不是您用例的最佳解决方案,您可以使用array.reduce方法:


action.payload.reduce((accumulator, currentValue) => {

  accumulator[currentValue.id] = currentValue.details.colour;

  return accumulator;

}, {});


查看完整回答
反对 回复 2022-10-08
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

你可以试试这段代码,Array.reduce 也能做同样的工作。


 let arr = [

    {

      details: {

        campus: [

          {

            address: '115-119...',

            campusName: 'blah',

            email: 'blah',

          },

        ],

        colour: '#640E27',

        schoolCode: '8383',

      },

      enrolled: true,

      id: '8383',

    },

  ];


  const reducedHash = arr.reduce((acc, data) => {

    return { ...acc, ...{ [data.id]: data.details.colour } };

  }, {});


查看完整回答
反对 回复 2022-10-08
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

使用.forEach或.reduce


var data = [

  {

    "details": {

      "campus": [

        {

          "address": "115-119...",

          "campusName": "blah",

          "email": "blah",

        }

      ],

      "colour": "#640E27",

      "schoolCode": "8383"

    },

    "enrolled": true,

    "id": "8383"


  }

];

var res = {};

data.forEach(({id, details})=>{

 res[id] = details.colour

});


console.log(res);


//Reduce


var res2 = data.reduce((acc, {id, details})=>{

  return {...acc, ...{[id]:details.colour}}

}, {});


   console.log(res2)


查看完整回答
反对 回复 2022-10-08
  • 3 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信