【问题标题】:Convert JavaScript array based on key value pairs from a JSON file.根据 JSON 文件中的键值对转换 JavaScript 数组。
【发布时间】:2018-07-13 19:05:01
【问题描述】:

我正在尝试创建一个系统来为我的应用标记不适当的 cmets。

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

最终数组中的所有值将相加得到评论分数。

这里是一个示例起始数组:

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

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

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

根据键值对,新数组应该是这样的:

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

有谁知道在基于键:值对转换字符串时从哪里开始?

任何帮助将不胜感激。

【问题讨论】:

  • 就用Array#map:wordArray.map(word => myWordObject[word])
  • StackOverflow 不是免费的编码服务。所以希望你try to solve your own problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
  • Javascript 有很多方法可以遍历数组元素。它们中的任何一个都应该易于使用。

标签: javascript arrays json ecmascript-6


【解决方案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】:

    只需映射对象的值,或为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);

    【讨论】:

      【解决方案3】:

      你可以简单地使用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);

      【讨论】:

        猜你喜欢
        • 2019-01-05
        • 2020-04-06
        • 2013-05-03
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        • 1970-01-01
        • 2019-07-16
        • 1970-01-01
        相关资源
        最近更新 更多