合并数组的方法:(可以应用在上拉加载更多)

220 阅读1分钟

扩展运算符

不希望原数组(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)