javascript - 使用 jquery 映射对象字段

标签 javascript jquery

我正在尝试映射对象的一部分,但有一些 undefined variable 。这是我的对象(数据,它是对象数组)转储到 json 中:

[
  {
    "key": "Sam",
    "values": [
      {
        "label": "Name",
        "value": 38
      },
      {
        "label": "Surname",
        "value": 38
      },
      {
        "label": "Phone",
        "value": 36
      },
      {
        "label": "Text",
        "value": 38
      },
      {
        "label": "Website",
        "value": 28
      },
      {
        "label": "Rating",
        "value": 0
      },
      {
        "label": "Factor",
        "value": 2
      },
      {
        "label": "Cases",
        "value": 2
      },
      {
        "label": "Hours",
        "value": 5
      }
    ],
    "color": "#E05353"
  },
  {
    "key": "Niki",
    "values": [
      {
        "label": "Name",
        "value": 38
      },
      {
        "label": "Surname",
        "value": 38
      },
      {
        "label": "Phone",
        "value": 37
      },
      {
        "label": "Text",
        "value": 38
      },
      {
        "label": "Website",
        "value": 4
      },
      {
        "label": "Rating",
        "value": 0
      },
      {
        "label": "Factor",
        "value": 1
      },
      {
        "label": "Cases",
        "value": 0
      },
      {
        "label": "Hours",
        "value": 0
      }
    ],
    "color": "#293F90"
  },
  {
    "key": "Dan",
    "values": [
      {
        "label": "Name",
        "value": 21
      },
      {
        "label": "Surname",
        "value": 21
      },
      {
        "label": "Phone",
        "value": 6
      },
      {
        "label": "Text",
        "value": 21
      },
      {
        "label": "Website",
        "value": 2
      },
      {
        "label": "Rating",
        "value": 1
      },
      {
        "label": "Factor",
        "value": 3
      },
      {
        "label": "Cases",
        "value": 5
      },
      {
        "label": "Hours",
        "value": 1
      }
    ],
    "color": "#32B6E8"
  },
  {
    "key": "Jake",
    "values": [
      {
        "label": "Name",
        "value": 58
      },
      {
        "label": "Surname",
        "value": 58
      },
      {
        "label": "Phone",
        "value": 56
      },
      {
        "label": "Text",
        "value": 58
      },
      {
        "label": "Website",
        "value": 30
      },
      {
        "label": "Rating",
        "value": 1
      },
      {
        "label": "Factor",
        "value": 2
      },
      {
        "label": "Cases",
        "value": 1
      },
      {
        "label": "Hours",
        "value": 2
      }
    ],
    "color": "#77B242"
  },
  {
    "key": "Steve",
    "values": [
      {
        "label": "Name",
        "value": 100
      },
      {
        "label": "Surname",
        "value": 100
      },
      {
        "label": "Phone",
        "value": 100
      },
      {
        "label": "Text",
        "value": 100
      },
      {
        "label": "Website",
        "value": 33
      },
      {
        "label": "Rating",
        "value": 2
      },
      {
        "label": "Factor",
        "value": 2
      },
      {
        "label": "Cases",
        "value": 0
      },
      {
        "label": "Hours",
        "value": 17
      }
    ],
    "color": "#FFA614"
  }
]

我需要做的是将每个键的值乘以 100。这是我得到的:

$.each(data, function(i,val){
      $.each(val.values, function(i,v){
        v.value = (v.value * 100);
      });
    });

高级开发人员告诉我,我可以使用 $.map 做得更好,怎么做?

最佳答案

这是 map 版本 - 尽管我不同意您的“高级”开发人员认为它更好:

var mappedObjects = $.map(data, function(val){
      return { 
          key: val.key, 
          values: $.map(val.values, function(v) { return { label: v.label, value: v.value * 100 }; }
      };
});

在我看来,您拥有的代码更加清晰,更不用说事实上,正如下面 Felix 提到的,您不必要地创建了很多新对象。

关于javascript - 使用 jquery 映射对象字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16944427/

相关文章:

javascript - 表单提交上的 JQuery 附加表单不起作用

javascript - 如何检测文本区域输入中的换行符?

JavaScript 应用程序 : Recommended way of storing chat messages on client's end

javascript - 如何通过javascript捕获浏览器的事件

javascript - 如何只让当前子菜单获得事件类而不是所有子菜单?

php - 随机遍历数组而不提取重复值

javascript - jQuery 监听所有文本输入变化

javascript - 使用 Vue JS 访问多维数组

javascript - 更改 Jquery .filter() 函数内的变量值

javascript - 使用正则表达式从字符串中提取数字