js 字符串和数据均有concat方法
①,字符串 concat 方法
字符串 concat 方法用于连接两个字符串,返回一个新字符串,不改变原字符串。
var s1 = 'abc'; var s2 = 'def'; s1.concat(s2) // "abcdef" s1 // "abc"
该方法可以接受多个参数。
'a'.concat('b', 'c') // "abc"
如果参数不是字符串,concat
方法会将其先转为字符串,然后再连接。
var one = 1; var two = 2; var three = '3'; ''.concat(one, two, three) // "123" one + two + three // "33"
上面代码中,concat
方法将参数先转成字符串再连接,所以返回的是一个三个字符的字符串。作为对比,加号运算符在两个运算数都是数值时,不会转换类型,所以返回的是一个两个字符的字符串。
②,数组的 concat 方法
数组 concat 方法用于多个数组的合并。它将新数组的成员,添加到原数组成员的后部,然后返回一个新数组,原数组不变。
['hello'].concat(['world']) // ["hello", "world"] ['hello'].concat(['world'], ['!']) // ["hello", "world", "!"] [].concat({a: 1}, {b: 2}) // [{ a: 1 }, { b: 2 }] [2].concat({a: 1}) // [2, {a: 1}]
除了数组作为参数,concat
也接受其他类型的值作为参数,添加到目标数组尾部。
[1, 2, 3].concat(4, 5, 6) // [1, 2, 3, 4, 5, 6]
③,字符串和数组混用 concat 方法
var str = 'yangping' ; var arr = ['y','p'] ; str.concat(arr) ; // "yangpingy,p" arr.concat(str) ; // ["y", "p", "yangping"]
当调用 “str.concat(arr)” 时候, 会将 arr 转换为字符串值 , 然后和 str 拼接起来,等效于以下代码
str + arr.toString()
而数组的 toString 方法,就是将arr数组所有元素值以 ',' 拼接起来(结果为 "y,p"),所以最终的结果字符串值为 "yangpingy,p"
当调用 “arr.concat(str)”时候,因为 arr 的 concat 方法允许接收字符串值作为参数,所以直接拼接到数组后面啦,所以最终结果为 ["y", "p", "yangping"]
注:字符串 concat 方法返回字符串 ,数组的 concat 方法返回数组