javascript - 如何DRY映射函数?

标签 javascript mapping dry

我有以下数据:

var jsonData = {
  "data": [
    {
      "id": 1,
      "name": "London",
      "date": "2018-04-20",
      "temp": 15,
      "rain": 2,
      "wind": 50,
      "humidity" : 80,
    }
  ]
}; 

这是我当前编码的映射部分:

var mainContainer = {
  temp : jsonData.data.map (a => a.temp), 
  rain : jsonData.data.map (a => a.rain),        // jsonData.data.map (a => ) being repeated
  wind : jsonData.data.map (a => a.wind),        // jsonData.data.map (a => ) being repeated
  humidity: jsonData.data.map (a => a.humidity)  // jsonData.data.map (a => ) being repeated
};

console.log(mainContainer);

有没有什么方法可以干燥代码,这样我就不用重复映射函数了?唯一的区别在于属性名称和映射部分。

最佳答案

创建要映射的属性名称数组

var props = ["temp", "rain", "wind", "humidity" ];

现在使用 reduce 迭代此 props

var mainContainer = props.reduce( (a,c) => {
   a[c] = jsonData.data.map (s => s[c]);
   return a;
}, {});

关于javascript - 如何DRY映射函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49938082/

相关文章:

javascript - 将设备添加到 Visual Studio 2015 的 Ripple

Javascript 仅适用于页面上的某些位置

ios - iPhone中类似于Android ArrayList的任何内容

python - 具有计算值和非计算值的元组列表?

c# - 如果两个功能几乎相同,如何遵守 DRY 原则?

Javascript:更改 <h2> 标题颜色 onmouseover()

java - 与连接表中的类型单向关联

json - 使用 JSON 模式进行 DRY 用户输入验证(客户端、服务器端)

java - 设置 javascript 文件的版本。 Java EE + Tomcat