String.prototype.concat()
将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回
1 2
| var hello = "您好, "; console.log(hello.concat("热烈", "欢迎访问我的博客。"));
|
Array.prototype.concat()
将传入的数组或非数组值与原数组合并,组成一个新的数组并返回
1 2 3 4 5
| var num1 = [1, 2, 3]; var num2 = [4, 5, 6]; var num3 = [7, 8, 9]; var nums = num1.concat(num2, num3);
|
Array.prototype.push()
添加一个或多个元素到数组的末尾,并返回数组新的长度(length 属性值)
1 2 3 4 5
| var sports = ["soccer", "baseball"]; var total = sports.push("football", "swimming");
console.log(sports); console.log(total);
|
创建了 sports 数组,包含两个元素,然后又把两个元素添加给它。total 变量为数组的新长度值
合并两个数组
1 2 3 4 5 6 7
| var arr1 = ['parsnip', 'potato']; var arr2 = ['celery', 'beetroot']; Array.prototype.push.apply(arr1, arr2);
console.log(arr1);
|
apply()``call()
方法类似,还需要加强理解
使用for合并
1 2 3 4 5 6
| function flatten (arr1, arr2) { for (var i = 0; i < arr2.length; i++) { arr1.push(arr2[i]); } return arr1; }
|
1 2 3 4 5 6
| function flatten (arr1,arr2) { for (var i = arr1.length - 1; i >= 0; i--) { arr2.unshift(arr1[i]); } return arr2; }
|
两个方法结果一样。
unshift()
方法在数组的开头添加一个或者多个元素,并返回数组新的 length 值
Array.prototype.reduce() | Array.prototype.reduceRight()
reduce()
接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值
reduceRight()
接受一个函数作为累加器(accumulator),让每个值(从右到左,亦即从尾到头)缩减为一个值。(与 reduce() 的执行方向相反)
数组所有项相加
1 2 3 4 5 6 7 8 9 10 11
| var arr1 = [0, 1, 2, 3].reduce(function(a, b) { return a + b; });
var arr2 = [0, 1, 2, 3].reduceRight(function(a, b) { return a + b; });
|
数组扁平化
1 2 3 4 5 6 7 8 9 10 11
| var arr1 = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) { return a.concat(b); });
var arr2 = [[0, 1], [2, 3], [4, 5]].reduceRight(function(a, b) { return a.concat(b); }, []);
|
合并两组数组
1 2 3 4 5 6
| function flatten (arr1, arr2) { return arr2.reduce(function(prev, curr){ prev.push(curr); return prev; },arr1); }
|
1 2 3 4 5 6
| function flatten(arr1, arr2){ return arr1.reduceRight( function (prev, curr){ prev.unshift(curr); return prev; },arr2); }
|
数组去重
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| function flatten(arr1,arr2){ var result = []; var arr = [];
arr = arr2.reduce(function(prev, curr){ prev.push(curr); return prev; },arr1);
for (var i = 0; i < arr.length; i++) { var index = arr[i]; if (result.indexOf(index) === -1) { result.push(index); } } return result; } flatten([1,2],[12,1,2,3,4]);
|
indexOf
返回给定元素能找在数组中找到的第一个索引值,否则返回-1。