根据JSON文件中的键值对转换JavaScript数组。

时间:2018-07-13 19:05:01

标签: javascript arrays json ecmascript-6

我正在尝试创建一个系统来标记对我的应用程序的不适当评论。

我有一个将整个注释转换为字符串数组的系统,但是我想创建一个JavaScript函数,根据来自JSON的键值对将所有这些数组项转换为数字值。如果找不到与单词匹配的键,则应将其替换为0。

最终数组中的所有值都将加在一起以获得评论分数。

这是一个示例起始数组:

["Bad", "reallyBad", "Good", "Neutral", "Good"]

我想将此与JSON键进行比较:值对象,例如:

{
    "reallyBad": -10,
    "Bad": -5,
    "Good": 5,
    "reallyGood": 10
}

基于键值对,新数组应为:

[-5, -10, 5, 0, 5]

在基于键:值对转换字符串时,有人知道入门的好地方吗?

任何帮助将不胜感激。

3 个答案:

答案 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);