1

オブジェクトの一部をマップしようとしていますが、未定義の変数がいくつかあります。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、どうやって?

4

1 に答える 1

1

これが地図のバージョンです - 私はあなたの「上級」開発者に同意しませんが、それはより良いです:

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 が以下で述べたように、多くの新しいオブジェクトを不必要に作成しているという事実は言うまでもなく、あなたが持っているコードははるかに明確です。

于 2013-06-05T15:58:35.220 に答える