嗨,我有这样的学校数据:
[
{
"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作为哈希的键值?
lodash keyBy可能不是您的用例的最佳解决方案,而是可以使用array.reduce方法:
action.payload.reduce((accumulator, currentValue) => {
accumulator[currentValue.id] = currentValue.details.colour;
return accumulator;
}, {});
您可以尝试使用此代码,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 } };
}, {});
使用.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)