2017-10-09 8 views
0

私の矢印関数のパラメータwordをオブジェクトキーのプロパティとして返したいと思います。しかし、返されたオブジェクトには、代わりにプロパティ"word"が含まれています。矢印関数はオブジェクトのプロパティとしてパラメータを返します

lines = ["first row","second row","third row"] 
 
let newLines = lines.map((item, index)=> { 
 
        let wordsPerLines = item.split("\s"); 
 
        return wordsPerLines.map(word => ({ word : index})) 
 
      } 
 
      ); 
 
      console.log(newLines);

これが出力されます:

[ 
    [ 
    { 
     "word": 0 
    }, 
    { 
     "word": 0 
    } 
    ], 
    [ 
    { 
     "word": 1 
    }, 
    { 
     "word": 1 
    } 
    ], 
    [ 
    { 
     "word": 2 
    } 
    ] 
] 

私の代わりにこの出力を持っているしたいと思います:

[ 
    [ 
    { 
     "first": 0 
    }, 
    { 
     "row": 0 
    } 
    ], 
    [ 
    { 
     "second": 1 
    }, 
    { 
     "row": 1 
    } 
    ], 
    [ 
    { 
     "third": 2 
    }, 
    { 
     "row": 2 
    } 
    ] 
] 
+0

質問は終了しましたが、文字列の分割に問題があります。あなたは正規表現を文字列として入れています。 '.split( '')'または '.split(/ \ s /)'を使用してください – chazsolo

+0

@chazsolo、ありがとうございます! – edkeveked

答えて

1

は、角カッコ内のプロパティ名を入れてありますので、

word => ({ [word] : index}) 

return wordsPerLines.map(word => ({ [word] : index})); 

[ ]は任意の式を含めることができます。これが評価され、結果の文字列値がプロパティ名になります。

1

Javascriptが文字通りオブジェクトのキーを取ります。変数を使用するには、次のようにあなたのリターンコードを変更します。

return wordsPerLines.map(word => ({ [word] : index})) 

ブラケットはjsのは、それが変数ではなく、文字通り'word'だ知っています。

関連する問題