美文网首页
JS练习:数组类(牛客)

JS练习:数组类(牛客)

作者: pp_5793 | 来源:发表于2018-10-11 20:25 被阅读0次

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<arr.length;i++)
  {
    if(arr[i]===item)
    {
      return i;
    }
  }
    return -1;
}

注意:括号的位置,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<arr.length;i++)//遍历数组
    {
        if(arr[i]==item)//如果相等进行删除操作
        {
            arr.splice(i,1);//利用splice()函数进行删除
            i--;//最后由于开始遍历的总是第一个,再下一次i+1时总是0
        }
    }
    return arr;返回值
}

对splice()方法的一个学习
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练习:数组类(牛客)

    1 要求输入一个数组和一个元素,如果元素在数组中,则返回数组中的位置,否则返回-1。 代码1:浏览器支持index...

  • JS练习2:数组(牛客)

    1 sort()方法 Array.sort()方法将数组中的元素排序并返回排序后的数组。当不带参数调用sort()...

  • 牛客JS题目练习

    1、找出元素 item 在给定数组 arr 中的位置 2、计算给定数组 arr 中所有元素的总和 3、移除数组 a...

  • 常用数组操作方法

    (最近除了项目在练习自己的编程能力,以下是牛客网练习的知识点小总结? ) 注意:数组相关学习建议到MDN学习htt...

  • js类数组

    定义 1.具有索引属性(数字)2.有length属性3.最好加上push属性 运用 arguments是常见的类数...

  • js类数组

    1. 类数组与数组的区别: 不具有数组所具有的方法; 拥有length属性,其它属性(索引)为非负整数(对象中的...

  • 牛客网SQL实战练习——11~15

    牛客网SQL实战练习——11~15 声明:练习牛客网SQL实战题目,整理笔记。11.获取所有员工当前的manage...

  • 牛客网SQL实战练习——16~20

    牛客网SQL实战练习——16~20 声明:练习牛客网SQL实战题目,整理笔记。16.统计出当前各个title类型对...

  • 解开那一层面纱,js类数组的小秘密(下篇)

    前言: 在 解开那一层面纱,js类数组的小秘密(上篇)里面,已经提到类数组的定义,以及常见的类数组类型,类数组的转...

  • js 数组练习

    数组:多个变量集合 var arr=[ ]; var arr=new Array(); var arr=...

网友评论

      本文标题:JS练习:数组类(牛客)

      本文链接:https://www.haomeiwen.com/subject/xfbmaftx.html