2017-04-10 56 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); 

两个连接都可以工作,但一个连接方括号,另一个连接没有连接。他们都是对的吗?使用concat将对象添加到阵列的正确方法

+0

使用两种不同的形式并不好。一个用于将数组添加到数组中,另一个用于添加其他任何内容。它不一致,增加了意外错误的风险。 – 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

谢谢,我很好奇方括号在concat中做什么?我们不是添加一个数组而是一个对象//啊,好的,明白了。谢谢 –