我正在尝试创建一个系统来标记对我的应用程序的不适当评论。
我有一个将整个注释转换为字符串数组的系统,但是我想创建一个JavaScript函数,根据来自JSON的键值对将所有这些数组项转换为数字值。如果找不到与单词匹配的键,则应将其替换为0。
最终数组中的所有值都将加在一起以获得评论分数。
这是一个示例起始数组:
["Bad", "reallyBad", "Good", "Neutral", "Good"]
我想将此与JSON键进行比较:值对象,例如:
{
"reallyBad": -10,
"Bad": -5,
"Good": 5,
"reallyGood": 10
}
基于键值对,新数组应为:
[-5, -10, 5, 0, 5]
在基于键:值对转换字符串时,有人知道入门的好地方吗?
任何帮助将不胜感激。
答案 0 :(得分:1)
只需映射对象的值,或为Neutral
取默认值即可。
var array = ["Bad", "reallyBad", "Good", "Neutral", "Good"],
weights = { reallyBad: -10, Bad: -5, Good: 5, reallyGood: 10 },
result = array.map(w => weights[w] || 0);
console.log(result);
答案 1 :(得分:1)
您可以在数组上使用.map()
对数组中的每个项目执行一个函数,并为此返回值。因此,将数组中的每个字符串用作键,以从评级对象中获取值。
const array = ["Bad", "reallyBad", "Good", "Neutral", "Good"];
const ratings = {
"reallyBad": -10,
"Bad": -5,
"Good": 5,
"reallyGood": 10
};
const ratingsArray = array.map(item => ratings[item] || 0);
console.log(ratingsArray);
答案 2 :(得分:0)
您只需使用Array.map()
尝试以下操作:
var arr = ["Bad", "reallyBad", "Good", "Neutral", "Good"];
var obj = {
"reallyBad": -10,
"Bad": -5,
"Good": 5,
"reallyGood": 10
};
var result= arr.map((a)=> obj[a] || 0);
console.log(result);