01.找处元素item在给定数组arr中的位置
function indexOf1(arr, item) {
return arr.indexOf(item);
};
function indexOf2(arr,item){
var index = -1;
arr.forEach(function (res,index) {
if(res===item&&index===-1){
index=i;
}
});
return index;
};
function indexOf3(arr,item) {
var len = arr.length;
for(var i = 0;i<len;i++){
if(arr[i]===item){
return i;
}
}
return -1;
};
02.计算数组arr中所有元素的和
function sum1 (arr) {
return arr.reduce(function (p, c, i, a) {
//1--:34[3,4,5,8]
//2--:75[3,4,5,8]
//3--:128[3,4,5,8]
//p每次计算的结果相当于sum+=c中的sum;
//而c每次计算的结果相当于sum+=c中的c;
//i为索引
return p + c;
});
};
function sum2 (arr) {
var s = 0;
arr.forEach(function (value, index, arr) {
s += value;
});
return s;
};
function sum3 (arr) {
return eval(arr.join("+"));
};
03.移除数组arr中与item相等的元素,返回新数组
function remove1 (arr, item) {
//splice(index,howmany,item1...itemx);
//index:规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
//howmany:要删除的项目数量。如果设置为 0,则不会删除项目。
var newArr = arr.splice(0);
for (var i = 0; i < newArr.length; i++) {
if (newArr[i] == item) {
newArr.splice(i, 1);
i--;
}
}
return newArr;
};
function remove2 (arr, item) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] == item) {
newArr.push(arr[i]);
}
}
return newArr;
};
function remove3 (arr, item) {
return arr.filter(function (val) {
return val != item;
});
};
04.移除数组arr中与item相等的元素,返回原数组
//splice(index,len,[item])
var arr1 = ['a', 'b', 'c', 'd'];
//remove--item不设置
arr1.splice(1, 1);
console.log(arr1);//Array [ "a", "c", "d" ]
arr1.splice(1, 2);
console.log(arr1);//Array [ "a" ]
//replace--item为替换值
var arr2 = ['a', 'b', 'c', 'd'];
arr2.splice(1, 1, 'ttt');
console.log(arr2);//Array [ "a", "ttt", "c", "d" ]
arr2.splice(1, 2, 'ddd');
console.log(arr2);//Array [ "a", "ddd", "d" ]
//add--len设置为0,item为添加值
05.在数组arr末尾添加item,返回新数组
//普通迭代拷贝
function append1 (arr,item) {
var len = arr.length,
newArr = [];
for(var i = 0;i < len;i++){
newArr.push(arr[i]);
}
newArr.push(item);
return newArr;
};
//使用slice浅拷贝+push组合
function append2(arr,item) {
var newArr = arr.slice(0);//slice(start,end)浅拷贝
newArr.push(item);
return newArr;
};
//使用concat将传入的数组或非数组值与原数组合并,组成一个新的数组并返回
function append3(arr,item) {
return arr.concat(item);
}
06.删除数组arr最后一个元素,返回新数组
//删除数组最后一个元素,返回新数组
function truncate1 (arr) {
return arr.slice(0,-1);
}
function truncate2(arr){
var a=[];
a = arr.slice(0);
a.pop(arr[arr.length-1]);
};
07.在数组arr开头添加item,返回新数组
function prepend1(arr,item){
return [item].concat(arr);
}
function prepend2(arr,item) {
var newArr = [item];
[].push.apply(newArr,arr);
return newArr;
}
function prepend3(arr,item) {
var newArr = arr.slice(0);
newArr.unshift(item)//等价newArr.splice(0,0,item);
return newArr;
}
08.删除数组arr第一个元素,返回新数组
function curtail1(arr){
return arr.slice(1);
}
function curtail2(arr) {
return arr.filter(function (value,index) {
return index!==0;
})
};
function curtail3(arr) {
var newArr = [];
[].push.apply(newArr,arr);
newArr.shift();
return newArr;
};
function curtail4(arr) {
var newArr = arr.concat();
newArr.shift();
return newArr;
};
09.合并数组,返回新数组
function concat1(arr1,arr2) {
return arr1.concat(arr2);
};
function concat2(arr1,arr2) {
var newArr = arr1.slice(0);
[].push.apply(newArr,arr2);
return newArr;
};
10.在数组arr的index处添加item,返回新数组
function insert1(arr,item,index){
return arr.slice(0,index).concat(item,arr.slice(index));
};
function insert2(arr,item,index) {
var newArr = arr.concat();//等价于 newArr=arr.slice(0)
newArr.splice(index,0,item);
return newArr;
};
function insert3(arr,item,index) {
var newArr = [];
[].push.apply(newArr,arr);
newArr.splice(index,0,item);
return newArr;
};
11.统计数组arr等于item的元素出现的次数
function count1(arr,item) {
var count = arr.filter(function (a) {
return a===item;
});
return count.length;
};
function count2(arr,item) {
var count = 0;
arr.map(function (a) {
if(a===item) count++;
});
return count;
};
function count3(arr,item) {
var count = arr.reduce(function(p,c){
return c===item?p+1:p;
},0);
return count;
};
12.找出数组arr中重复出现过的元素
function duplicates(arr) {
//a数组存放结果,b数组存放arr中每个元素的个数
var a=[],b=[];
for(var i = 0;i<arr.length;i++){
if(!b[arr[i]]){
b[arr[i]]=1;
continue;
}
b[arr[i]]++;
}
for(var i = 0;i< b.length;i++){
if(b[i]>1){
a.push(i);
}
}
return a;
}
本人刚开始学习,有些地方还是不理解,如有错误或建议,请留言!谢谢!!!