61765


forEachで回す配列のobject

[code]

    [
        {
          value: 'ja', label: '日本語', locale: 'ja-JP'
        },
        {
          value: 'en', label: 'English', locale: 'en-US'
        },
        {
          value: 'cn', label: '简体中文', locale: 'zh-CN'
        },
      ];
    
[/code]

引数で指定したlangの配列オブジェクトの値に{cv.label}ではアクセスできません。

[code]

      const emptyArr = [];
    const arr = lang.forEach((cv) => (
      emptyArr.push({label: {cv.label}, value: {cv.value} })
    ));
    
[/code]

欲しい結果

[code]

    const arr = [
        { label: '日本語', value: 'ja' },
        { label: 'English', value: 'en' },
        { label: '简体中文', value: 'cn' },
      ];
    
[/code]


CC BY-SA 4.0
2019-12-25T11:16:16.317
61763
2019-12-25T12:10:51.950
22895
question
javascript es6
forEachで回したobjectの値を空の配列にpushしたい。


オブジェクト初期化子でオブジェクトを生成する場合には、 **オブジェクトのプロパティ名と、それに関連する値の組み合わせのリスト** とする必要があり、
`{cv.label}` や `{cv.value}` はエラーを発生させます。これは期待される出力結果を考慮すると、以下のように修正出来ます。

[code]

    const lang = [{
        value: 'ja',
        label: '日本語',
        locale: 'ja-JP'
      },
      {
        value: 'en',
        label: 'English',
        locale: 'en-US'
      },
      {
        value: 'cn',
        label: '简体中文',
        locale: 'zh-CN'
      },
    ];
    
    
    const emptyArr = [];
    const arr = lang.forEach((cv) => (
      emptyArr.push({
        label: cv.label,
        value: cv.value
      })
    ));
    console.log(emptyArr);
[/code]

また、今回の場合は `forEach` メソッドと `push` メソッドの代わりに `map` メソッドと分割代入を使い、以下のようにすることが出来ます。

[code]

    const lang = [{
        value: 'ja',
        label: '日本語',
        locale: 'ja-JP'
      },
      {
        value: 'en',
        label: 'English',
        locale: 'en-US'
      },
      {
        value: 'cn',
        label: '简体中文',
        locale: 'zh-CN'
      },
    ];
    
    const arr = lang.map(({label, value}) => ({label, value}));
    
    console.log(arr);
[/code]


CC BY-SA 4.0
2019-12-25T12:10:51.950
61765
2019-12-25T12:10:51.950
32986
61763
answer