1. 合并数组arr1和arr2.不要直接修改数组arr,结果返回新的数组
// 利用concat
function concat(arr1,arr2){
return arr1.concat(arr2);
}
// 利用slice+push
function concat(arr1,arr2){
var newArr = arr1.slice(0);
for(var i = 0;i< arr2.length;i++){
newArr.push(arr2[i]);
}
return newArr;
}
// 利用slice+push.apply
function concat(arr1,arr2){
var newArr = arr1.slice(0);
[].push.apply(newArr,arr2);
return newArr;
}
// 普通的迭代拷贝
function concat(arr1,arr2){
var newArr = [];
for(var i=0;i<arr1.length;i++){
newArr.push(arr1[i])
}
for(var j=0;j<arr2.length;j++){
newArr.push(arr2[j])
}
return newArr
}
2.在数组arr的index处添加元素item,不要直接修改数组arr,结果返回新的数组
// 利用slice+splice
function add(arr,index,item){
var newArr = arr.slice(0);
newArr.splice(index,0,item);
return newArr;
}
// 利用slice+concat
function add(arr,index,item){
return arr.slice(0,index).concat(item,arr.slice(index))
}
// 利用concat+splice
function add(arr,index,item){
var newArr = arr.concat();
newArr.splice(index,0,item);
return newArr
}
// 利用push.apply+aplice
function add(arr,index,item){
var newArr = [];
[].push.apply(newArr,arr);
newArr.splice(index,0,item);
return newArr
}
// 普通的迭代拷贝
function add(arr,index,item){
var newArr = [];
for(var i=0;i<arr.length;i++){
newArr.push(arr[i])
}
newArr.splice(index,0,item);
return newArr
}
3.统计数组arr中值等于item的元素出现的次数
// for循环
function times(arr,item){
var count = 0;
for(var i = 0;i<arr.length;i++){
if(arr[i]==item){
count++;
}
}
return count;
}
// filter() 利用指定的函数确定是否在返回的数组中包含某一项
function times(arr,item){
var count = arr.filter(function(a){
return a == item;
})
return count.length
}
// map
function times(arr,item){
var count = 0;
arr.map(function(a){
if(a == item){
count++
}
})
return count;
}
// forEach()
function times(arr,item){
var count = 0;
arr.forEach(a => {
a==item?count++:0
});
return count
}
4.找出数组arr中重复出现过的元素
function find(arr){
var newArr = arr.sort();
var result = [];
for(var i = 0;i<newArr.length;i++){
if(newArr[i] == newArr[i+1]&&newArr[i]!== newArr[i-1]){
result.push(newArr[i])
}
}
return result;
}
function find(arr){
// Array.prototype.filter 接受三个参数,(element,index,array)
return arr.sort().filter(function(e,i){
return arr[i] == arr[i+1]&&arr[i]!== arr[i-1];
})
}
5.为数组arr中的每个元素求二次方,不要直接修改数组,结果返回新的数组
function square(arr){
var newArr = arr.slice(0);
var result = [];
for(var i = 0 ; i<newArr.length;i++){
result.push(arr[i]*arr[i]);
}
return result;
}
function square1(arr){
return arr.map(function(item,index,array){
return item*item;
})
}
6.在数组arr中,查找值与item相等的元素出现的所有位置
//filter
function findAllOccurrences(arr,item){
var result = [];
arr.filter(function(element,index){
return element ==item &&result.push(index)
})
return result
}
//for循环
function findAllOccurrences(arr,item){
var result = [];
for(var i = 0;i<arr.length;i++){
if(arr[i]==item){
result.push(i)
}
}
return result
}