2017-10-19 15 views
0

私は、キーと値のペアを持つ新しいオブジェクトを返す関数を作成しようとしています。私は配列の最初と最後の要素からキーと値を取得しています。私はキーと値のペアを構成する要素を返す関数を得ることができますが、関数を介してオブジェクトを返すために中括弧で配列要素をラップするとすぐには機能しません。何が問題ですか?指定したキーと値でオブジェクトを作成するにはどうすればよいですか?

// Create an array 
var names = ["Apples", "Oranges", "Yummy", "Candy", "Plop"]; 

// Return an object with a key–value pair from the first and last element of an array 
function firstLast(array) { 
    var obj = { 
    array[0] + ": " + "'" + array[array.length - 1] + "'"; 
    }; 
    return obj; 
} 

console.log(firstLast(names)); 

答えて

4

無効な構文です。必要なのは次のとおりです。

var obj = { 
    [array[0]]: array[array.length - 1] 
}; 

computed propertiesを使用しています。

選択肢は次のようになります。

var obj = {}; 
obj[array[0]] = array[array.length - 1]; 
+0

Iは、今日 '{[VAR]:1} STHを学ん'部分。とてもクール。 – wscourge

+0

私は見る!ありがとうございました。私はこの構文をまったく知らないだけです。 –

1

あなたが値を割り当てるために角括弧表記を使用することができますが、私の最初の投稿はXufoxの代替@と同じ答えを含んでいました。だから、私は、関数に渡される引数を使用し、返されたオブジェクトをその配列からシフトしてポップするという別のアプローチを提示すると考えました。同じ仕事をするのとはちょっと違う。

var names = ["Apples", "Oranges", "Yummy", "Candy", "Plop"]; 
 

 
function firstLast(array) { 
 
    return {[arguments[0].shift()]: arguments[0].pop()}; 
 
} 
 

 
console.log(firstLast(names));

関連する問題