JS练习:数组类(牛客)

1

要求输入一个数组和一个元素,如果元素在数组中,则返回数组中的位置,否则返回-1。

代码1:浏览器支持indexOf()方法

function indexOf(arrr,item){
return arr.indexOf(item);
}

:
indexOf()方法可以返回某个指定的字符串值在字符串中首次出现的位置,如果不存在直接返回-1。

代码2:考虑浏览器是否支持indexOf()方法(较全面)

function indexOf(arr, item) {
  if (Array.prototype.indexOf){//判断浏览器是否支持indexOf方法
      return arr.indexOf(item);
  } 
else {
      for (var i = 0; i < arr.length; i++)
          {//遍历数组
          if (arr[i] === item)
          {//找出与item相等的数
              return i;//返回这个数的索引
          }
      }
  }     
  return -1;//否则返回-1
}

var i=0; 定义i,对数组进行遍历,找到item相等的数,并返回对应的索引,最后没有找到则返回-1。

代码3 大众的方法:

function indexOf(arr, item) 
{
    for(var i=0;i

注意:括号的位置,return -1 要在上个括号则会造成错误,会返回很多-1,因为其在循环内部。

2 数组元素的添加和删除:
(JS)

var a=[];//赋值一个新的数组
a.push("zero");//在末尾添加一个元素。a=["zero"]
a.push("one","two")//再添加两个元素。a=["zero","one","two"]
delete a[0];//a=["one","two"']

算法2 如果数组中出现与所给数相同的数,在原数组中进行删除。


function removeWithoutCopy(arr, item) {
    for(var i=0;i


var a=[0,1,2,3,4,5,6,7,8]。
(1)a.splice(2);//从索引为2的元素开始删除,a=[0,1]。
(2)a.splice(1,2);//从索引为1的元素开始删除,删除两个,a=[0,3,4,5,6,7,8]。
(3)a.splice(2,0,'a','b');//从索引为2 的元素开始删除,删除0个,并插入a和b,a=[0,1,a,b,2,3,4,5,6,7,8]。(tips:默认从左边插入)
(4)a.splice(2,2,'q','w');//从索引为2 的元素开始删除,删除俩个,并插入q和w,a=[0,1,q,w,4,5,6,7,8]。

var a=[1,2,3,4];
a.splice(1,0,7);
return a;
//返回a=[1,7,2,3,4]

在上面的代码中,splice()方法中的第一个参数表示开始删除的位置索引为1;0代表要删除的个数,而7代表插入的元素。如果是splice(1,0,7,8),则a=[1,7,8,2,3,4].

3
在一个数组尾部添加一个指定的数,注意不要直接在数组中进行修改。
直接用concat()方法:

function addArr(arr,item){
return arr.concat(item);
} 

concat()方法:Array.concat()方法创建并返回一个新数组
例子:

var a=[1,2,3];
a.concat(4,5);//返回[1,2,3,4,5]
a.concat([4,5]);//返回[1,2,3,4,5]
a.concat([4,5],[6,7]);//返回[1,2,3,4,5,6,7]
a.concat(4,[5,[6,7]]);//返回[1,2,3,4,5,[6,7]]

4
删除数组最后一个元素,不要在原数组上直接修改,最后返回新的数组
直接用slice()

function truncate(arr) {
return arr.slice(0,-1);
}

Array.slice()方法返回指定数组的一个片段或子数组,它的两个参数分别指定了片段的开始和结束的位置,
slice()切的这个片段是前闭后开的[ ... ),意思是它只返回从第一个参数起到第二个参数前的数组片段。参数如果是负数,表示是从倒数开始的。
eg:

var a=[1,2,3,4,5];
a.slice(0,3);//返回a=[1,2,3]
a.slice(1,-1);//返回a=[2,3,4]
a.slice(-3,-2);//返回a=[3]
function prepend(arr, item) {
    var a = arr.slice(0);//复制数组arr给a
     a.unshift(item);//在a的顶部加入元素item
    return a;//返回新的数组a
}

方法shift()和unshift()
Array.unshift/shift在数组的顶部添加/删除一个或多个元素,并自动调整元素的位置哦。不同的是,unshift()返回新的数组的长度,shift()删除第一个元素后把删除的元素返回两者返回的东西不一样哦
eg

var a =[];
a.unshift(1);//a=[1],返回1
a.unshift(22,1,2)//a=[22,1,2],返回3
a.shift();//a=[1,2],返回22

方法pop()和push()
Array.pop(),它删除数组最后一个元素,减小数组长度并返回它删除的值。Array.push()方法在数组的尾部添加一个或多个元素,并返回数组新的长度。
eg:

var stack =[];
stack.push(1,2);//stack:[1,2], 返回2
stack.pop();//stack:[1],返回1
stack.push(3);//stack:[1,3],返回2
stack.pop();//stack:[1],返回3




你可能感兴趣的:(JS练习:数组类(牛客))