扩展运算符
不希望原数组(a、b)改变,这时就只能使用concat了。
// 合并数组
let arr1 = ['23', '20', '30']
let arr2 = ['223', '202', '320']
let arr3 = [...arr1, ...arr2]//["23", "20", "30", "223", "202", "320"]
concat
-
concat方法连接a、b两个数组后,a、b两个数组的数据不变,同时会返回一个新的数组。这样当我们需要进行多次的数组合并时,会造成很大的内存浪费
-
先判断a、b两个数组哪个更大,然后使用大数组合并小数组,这样就减少了数组元素操作的次数
var a = [1,2,3];
var b = [4,5,6];
var c = a.concat(b);//c=[1,2,3,4,5,6];
apply
函数的apply方法有一个特性,那就是func.apply(obj,argv),argv是一个数组。 call() 和 apply() 之间的区别 不同之处是:
call() 方法分别接受参数。 apply() 方法接受数组形式的参数。
var e = [1,2,3];
var f = [4,5,6];
e.push.apply(e,f);//就等同于:a.push(4,5,6);
console.log(e)
var person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName + "," + city + "," + country;
}
}
var person1 = {
firstName:"John",
lastName: "Doe"
}
console.log(person.fullName.apply(person1, ["Oslo", "Norway"]))//John Doe,Oslo,Norway
for循环
这样的写法可以解决第一种方案中对内存的浪费
var c = [1,2,3];
var d = [4,5,6];
for(var i in d){
c.push(d[i]);
}
console.log(c)