2017-04-10 7 views
2
var obj = {name: 'tim', bio: 'lol'}; 

var arr = [{name: 'beba', bio:'lulu'}, {name: 'keh', bio: 'kih'}]; 

var newArr = arr.concat([obj]); 
or 
var newArr = arr.concat(obj); 

どちらのコンカットも機能しますが、1つは角括弧で、もう1つはコンボなしです。彼らはどちらも正しいですか?コンカットを使用して配列にオブジェクトを追加する適切な方法

+0

2つの異なる形式を使用するのはうれしくありません。アレイに配列を追加するための配列と、それ以外のものを追加する配列。それは矛盾しており、偶発的な間違いのリスクを増加させます。 – SpiderPig

+0

'.concat()'は面白いです...提供された引数が配列の場合は、スプレッド演算子を呼び出します。時には素敵な、時には素敵なこともあります。 – Redu

答えて

3

あなたはdocs of concat

を見ればはい、それは結構です。 concat関数は十分柔軟です。

concatメソッドは、それが呼び出されたオブジェクトの要素からなる新しい配列を作成するには、各引数に、順に続いて、その引数の各要素(引数が配列の場合)または引数そのもの(引数が配列でない場合)ネストされた配列引数に再帰しません。

あなたが通過していることを内部的にチェックして行います。

var new_array = old_array.concat(value1[, value2[, ...[, valueN]]]) 

更新:

var newArr = arr.concat(obj); 

あなたはconcat関数への単一のオブジェクトを渡していることを意味します。

var newArr = arr.concat([obj]); 

これは、単一のオブジェクトである配列を渡していることを意味します。

基本的に[]は配列を示します。

+0

おかげさまで、角括弧はどのように連結されているのですか?配列を追加するのではなく、オブジェクトを追加しています。//ああ、そうです。ありがとう –

関連する問題