Array.prototype.push.apply(a,b)与a.concat(b) 合并解析,array.filter实例(数组去重)

js数组合并有两个常用方法,用法如下:

var a=[1,2,3],b=[4,5,6];

1.a.concat(b);//得到1,2,3,4,5,6;

1.1那个数组在前面合并后那个数组的元素就在前面

1.2 可以利用这个来复制一份数组,a.concat(a);

1.3 数组长度无限制,返回值是合并后的数组

1.4 千万级别的数组合并大约30毫秒


2.Array.prototype.push.apply(a,b)  or a.push.apply(a,b);

2.1.Array.prototype.push.apply(a,b) ;//a,b两个数组都变成合并后的数组

2.2 数组长度有限制,不同浏览器不同,一般不能超过十万

2.3返回值是合并后数组的长度

2.4 在一万数据左右性能和concat差不多,大约2毫秒


总结:测试结果可知,还是用concat会划算一点,看返回值也可以知道,apply方法改变两个数组,性能自然会慢,而且有局限性



array.filter实例(数组去重)

参考文档   https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter


语法:

循环对数组中的元素调用callback函数, 如果返回true 保留,如果返回false 过滤掉,  返回新数组,老数组不变

var new_array = source_array.filter(callback(element,index, array))


备注:

a. 类似与 array.map

        b. 原来的数组不变


eg:

过滤掉数组中的重合的元素

var source_arr = ['a', 'b', 'a', 'c', 'a', 'd', '1',1,'1'];
var array_unique = source_arr.filter(function (element, index, array) {
    return array.indexOf(element) === index;
});
console.log(array_unique);
console.log(source_arr);


你可能感兴趣的:(JS)