注意以下数组处理方法的返回值都是一个新的数组,使用这些方法的原本数组不会发生改变,所以根据需要声明一个新的变量并赋值给他返回值。!!!
(包括字符串处理的join、split··方法)
.concat ()可以用来把两个数组的内容合并到一个数组中。
concat 方法的参数应该是一个数组。参数中的数组会拼接在原数组的后面,并作为一个新数组返回。
下面是一个拼接数组的例子,用concat 把 otherArray 拼接在 oldArray 的后面:
newArray = oldArray.concat(otherArray);
.map() 全选
map 方法可以方便的迭代数组,例子:
var timesFour = oldArray.map(function(val){
return val * 4;
});
map 方法会迭代数组中的每一个元素,并根据回调函数来处理每一个元素,最后返回一个新数组。注意,这个方法不会改变原始数组。
在我们的例子中,回调函数只有一个参数,即数组中元素的值 (val 参数) ,但其实,你的回调函数也可以支持多个参数,譬如:元素的索引index、原始数组arr。
var oldArray = [1,2,3,4,5];
var newArray = oldArray.map(function(ka){
return ka+3;
});
//oldArray中每个值都加了3
.reduce()累加
数组方法 reduce 用来迭代一个数组,并且把它累积到一个值中。
使用 reduce 方法时,你要传入一个回调函数,这个回调函数的参数是一个 累加器 (比如例子中的 previousVal) 和当前值 (currentVal)。
reduce 方法有一个可选的第二参数,它可以被用来设置累加器的初始值。如果没有在这定义初始值,那么初始值将变成数组中的第一项,而 currentVal 将从数组的第二项开始。
下面的例子使用了 reduce 来让数组中的所有值相减:
var singleVal = array.reduce(function(previousVal, currentVal) {
return previousVal - currentVal;
}, 0);
使用 reduce 方法来让 array 中的所有值相加,并且把结果赋值给 singleVal 。
.filter()过滤,注意返回值是一个新的数组,不改变原本数组(所以一般要新命名一个变量数组)
filter 方法用来迭代一个数组,并且按给出的条件过滤出符合的元素。
回调函数返回 true 的项会保留在数组中,返回 false 的项会被过滤出数组。
//过滤两个数组中公共元素,合并成一个数组
function diff(arr1, arr2) {
var newA=arr1.filter(function(a){
return arr2.indexOf(a)==-1;
});
var newB=arr2.filter(function(b){
return arr1.indexOf(b)==-1;
});
return newA.concat(newB);
}
diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);//[4]
slice() 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。原数据不会被修改。
var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
var citrus = fruits.slice(1, 3);//包括索引1不包括3['Orange','Lemon']