1. 找出元素item在给定数组arr中的位置
function indexOf(arr,item) {
if(Array.prototype.indexOf){
return arr.indexOf(item)
}else{
for(var i = 0 ; i< arr.length ;i++){
if(arr[i]==item){
return i
}
}
}
return -1;
}
indexOf()方法可以返回某个指定的字符串值在字符串中首次出现的位置
2.计算给定数组arr中所有元素的和
function sum(arr) {
var sum = 0;
for(var i = 0 ; i < arr.length;i++){
sum += arr[i]
}
return sum
}
function sum(arr){
if(arr.length == []){
return 0;
}else if(arr.length == 1){
return arr[0];
}else{
return arr[0] + sum(arr.slice(1));
}
}
function sum(arr){
return eval(arr.join('+'))
}
//这里先将所有数组项通过字符串"+"连为一个字符串"1+2+3+4+5+6...",
//然后返回的这个字符串传给eval()方法,eval()方法接收了这段字符串后,就直接将这段字符串中的代码放在当前作用域下执行了。
3.移除数组arr中的所有值与item相等的元素,直接在给定的arr数组上进行操作,并将结果返回
function qc(arr,item){
for(var i = 0;i<arr.length;i++){
if(item == arr[i] ){
arr.splice(i,1);
i--
}
}
return arr;
}
function qc(arr,item){
for(var i = 0;i < arr.length;i++){
if(arr[0]!==item){
arr.push(arr[0]);
}
arr.shift()
}
return arr;
}
push()和shift()的方法参照前面的博客:https://blog.csdn.net/weixin_41910848/article/details/81507334
4.移除数组arr中的所有值与item相等的元素,不要直接在给定的arr数组上进行操作,并将结果返回
function remove(arr,item){
// 声明一个新数组保存结果
var result = [];
// 循环遍历
for(var i = 0 ;i < arr.length ;i++){
// 如果arr[i]不等于item,就加入数组
if(arr[i] != item){
result.push(arr[i]);
}
}
return result;
}
function remove(arr,item) {
return arr.filter(function(ele){
return ele!=item;
})
}
5.在数组arr末尾添加元素item,不要直接修改数组arr,结果返回新的数组
function add(arr,item) {
var newArr = [];
for(var i = 0 ; i < arr.length;i++){
newArr.push(arr[i]);
}
newArr.push(item);
return newArr;
}
function add(arr,item){
var newArr = arr.slice(0);
newArr.push(item);
return newArr;
}
function add(arr,item){
return arr.concat(item)
}
6.删除数组arr最后一个元素,不要直接修改数组arr,结果返回新的数组
function del(arr){
var newArr = [];
for(var i = 0 ; i < arr.length;i++){
newArr.push(arr[i]);
}
newArr.pop();
return newArr;
}
function del(arr){
return arr.slice(0,-1);
}
function del(arr){
var newArr = [];
for(var i = 0 ; i < arr.length-1;i++){
newArr.push(arr[i]);
}
return newArr;
}
function del(arr){
return arr.filter(function(v,i,ar){
return i!==ar.length-1
})
}
6.在数组arr开头添加元素item,不要直接修改数组arr,结果返回新的数组
// concat + reverse
function addfirst(arr,item) {
var newArr = arr.concat(item);
return newArr.reverse();
}
//普通的迭代拷贝
function addfirst(arr,item){
var result = [];
for(var i = 0;i< arr.length;i++){
result.push(arr[i])
}
result.unshift(item);
return result;
}
//利用concat
function addfirst(arr,item){
return [item].concat(arr);
}
console.log(addfirst([1,1,2,3,4,4],8));