不知道如何对此映射进行编码 情感和颜色



你好,我尝试将颜色和情感映射在一起,每个帖子都有一个初始的情感和颜色,但是在响应用户选择的颜色和情感变化时,例如:帖子的初始情绪是悲伤和蓝色,用户选择快乐和绿色,通过结合四个变量得出新的情绪和颜色结果,我试图通过if ?,但我遇到了一个问题,手动映射不包括额外的可能性,所以有人知道如何做一个更有效的映射,我可以每次给出不同的结果,下面是我所做的一个例子

这是main函数

const {angry} = require('./emotions/angry/angry')

exports.ECBrige = (userEmotion, userColor,postEmotion, postColor) => {
if(userEmotion === 'angry'){
return angry(userEmotion, userColor,postEmotion, postColor)
}   
}

这是映射

const {yellow} = require('./colors/yellow');
const {lime} = require('./colors/lime');
const {green} = require('./colors/green');
const {aqua} = require('./colors/aqua');
const {blue} = require('./colors/blue');
const {pink} = require('./colors/pink');
const {red} = require('./colors/red');
const {orange} = require('./colors/orange');
exports.angry = (userEmotion, userColor,postEmotion, postColor) => {
if(userColor === 'yellow'){
return yellow(userEmotion, userColor,postEmotion, postColor)
}else if (userColor === 'lime'){
return lime(userEmotion, userColor,postEmotion, postColor)
}else if (userColor === 'green'){
return green(userEmotion, userColor,postEmotion, postColor)
}else if (userColor === 'aqua'){
return aqua(userEmotion, userColor,postEmotion, postColor)
}else if (userColor === 'blue'){
return blue(userEmotion, userColor,postEmotion, postColor)
}else if (userColor === 'pink'){
return pink(userEmotion, userColor,postEmotion, postColor)
}else if (userColor === 'red'){
return red(userEmotion, userColor,postEmotion, postColor)
}else{
return orange(userEmotion, userColor,postEmotion, postColor)
}
}

it输出未定义

您可以使用对象来存储颜色,然后像color[colorName]一样访问您的颜色函数

。/颜色/index.js-导出所有颜色

const {yellow} = require('./colors/yellow');
const {lime} = require('./colors/lime');
const {green} = require('./colors/green');
const {aqua} = require('./colors/aqua');
const {blue} = require('./colors/blue');
const {pink} = require('./colors/pink');
const {red} = require('./colors/red');
const {orange} = require('./colors/orange');
export { yellow, lime, green, aqua, ... }

。/mapping.js- color对象的访问属性。

// import your all colors
const colors = require('./colors');
exports.angry = (userEmotion, userColor,postEmotion, postColor) => {
try {
return colors[userColor](userEmotion, userColor,postEmotion, postColor);
} catch (err) {
// you may choose some color default
return colors.orange(userEmotion, userColor,postEmotion, postColor);
}
}

最新更新