数组也是引用类型

构造函数创建数组

Object 构造函数类型(所有类型基类)   Array 构造函数类型

求幂运算符 **    2**32-1 数组容量最大

arry.length 如果减小length的值 则相当于截断数组 不要这样用!

数组字面量创建数组  数组索引都是从0开始的

var arr = [1,2,'ss',true,{age:19},null,undefined]

数组的遍历 (两种方式)

for循环数组一般 i 从0开始 因为数组的索引都是从0开始的

for(var i = 0; i<arr.length; i++){

  arr[i]

}

//for in 遍历对象 拿到的是对象的属性名  遍历数组的时候拿到的是索引的编号

for(var k in arr){

  arr[k]

}

for in 遍历对象的时候 Object.prototype.temp= 'jack' var t = new Object(); 会打印出父类上的属性 hasownpropty

for in 遍历数组的时候 Array.prototype.myprop = 'lao' var t = new Array(); 会打印出父类上的属性

检测合法值案例 1,2属于合法

var t= [1,2,'ss',true,‘2’,3,4]

var rightNum = 0,

  illNum = 0;

for(var i = 0; i<t.length; i++){

  if(t[i] === 1 || t[i] === 2){

    rightNum += 1;

  }else{

    illNum += 1;

  }

}

数组的方法

栈数据结构 先入后出 (子弹夹) 数组模拟  pop 跟push 模拟栈数据结构

pop()  //从数组的尾部弹出一个元素 并返回弹出的元素(同时length -1)

push()  //从数组的尾部压入一个元素 并返回数组的新长度

队列数据结构  先进先出   数组模拟   从队列的尾部进 头部出  shift push 可以模拟队列数据结构

shift()  //可以让数组从数组的头部弹出 并返回次元素(同时length -1)  unshift头部压入元素

shift push 模拟队列数据结构

var t = []

t.push(1)

t.push(2)

t.push(3)

t.shift()

reverse()  对原数组进行逆序  var t = [1,2,3]   t.reverse()

sort() 对原数组的元素进行排序 var t = ['c','b','a']  t.sort()  字符串进行排序  

var arr = [22,33,1,44,5,7,21]  arr.sort()  sort 是按照字符串进行比较大小 如果数组中元素不是字符串则转化成字符串

数字排序   arr.sort(function(a,b){return a-b})  //函数作为参数

var t = [1,2,3]

t.concat['ss','b']

返回一个拼接的新数组 对原来数组没有影响

join方法可以将数组拼接成一个字符串

var t = [1,2,3]

t.toString() 会把数组转成字符串 用逗号分割不同元素

t.join()  默认跟toString一样 但是可以传参数用来分割 ('-') ('|')

t.slice()  //复制数组的一部分 对原数组没有任何影响

var m = [1,2,3,4,5]

m.slice(3,4) 从索引是3开始  截取到索引是4的前一个 => [4]

splice()  //对原数组插入删除替换数据(增删改) 返回删除的元素组成的数组 原数组就是删掉后剩下的数组

splice

参数1  删除数据的索引位置(start)  参数2  要删除数组元素的个数

参数3,4,5... 要插入的元素

var m = [1,2,3,4,5]

m.splice(2) //=> 返回[3,4,5]  原数组 [1,2]

m.splice(3,1)  //从索引3开始 删除一个 返回[4]  原数组 [1,2,3,5]

m.splice(3,1,'sd',true,'ggd')  //删除索引是3 然后插入

m.splice(3,0,'a','b')  //直接插入 不删除 在索引3前插入  m=>[1,2,3,'a','b',4,5]

替换数组中的3 为 'a'

m.splice(2,1,'a')

数组案例

var arr = [90,8,34,2,39,87,22,10]

1、数组反序

  arr.reverse();  //或者自己写for循环 temp

2、求数组中最小值 和 索引

  var min ,minIndex;

  min = t[0];

  minIndex = 0

  for( i = 1; i< t.length; i++){

    if(t[i] < min){

      min = t[i];

      minIndex = i;

    }

  }

  console.log(min)

  console.log(minIndex)

3、数组去重复  

var t = [90,8,34,2,39,87,22,10,2,39,8]  //indexOf ie8不支持 就query 可以用 inArray
  for(var i = 0; i< t.length; i++){
  if(t.indexOf(t[i])){
    t.splice(i,1)
  }
}

  方法1

  var t =  [90,8,34,2,39,87,22,10,2,39,8]

  //t.indexOf()  => ie8 不支持  jquery => 可以用inArray

  var arr = [];

  arr.push(t[0])

  for(var i = 1; i< t.length; i++){

    for(var k= 0;k <arr.length; k++){

      if(t[i] === arr[k]){

        break;

      }

    }

    if(k === arr.length){  //判断循环是否到最后 到最后 说明新数组中没有此元素

      arr.push(t[i])

    }

  }

  方法2

  var t =  [90,8,34,2,39,87,22,10,2,39,8]

  var obj = {};

  for(var i in t){

    var str = t[i];

    obj[str] = t[i];  //如果obj.str 这样会返回一个对象 {str:8} str并没有作为一个变量

  }

  var arr = []

  for(var m in obj){

    arr.push(obj[m])

  }

  console.log(arr)

4、冒泡排序  从大到小、从小到大

  第一个跟第二个进行比较 大的放后面

  第二个跟第三个进行比较 大的放后面

  第三个跟第四个进行比较 大的放后面

  第四个跟第五个进行比较 大的放后面

  ...

  这一趟的结果 让最大值 冒泡到了最后

js基础-数组及数据类型的更多相关文章

  1. JS基础——数组总结

    JS中数组被觉得是一种对象,慢慢的,怎么忽然感觉,JS中仅仅要能够独立出来的概念怎么都能够当成对象来解释呢?有点儿怀疑.继续学吧.先来总结一下JS中数组是怎样详细使用的. 一.创建 数组的创建在JS中 ...

  2. 百万年薪python之路 -- JS基础介绍及数据类型

    JS代码的引入 方式1: <script> alert('兽人永不为奴!') </script> 方式2:外部文件引入 src属性值为js文件路径 <script src ...

  3. JS基础-数组的常用方法-冒泡排序

    1.数组  1.关联数组    以数字作为元素下标的数组,就是索引数组.    以字符串作为元素下标的数组,就是关联数组.  2.js的关联数组    ex:在php中       $array=[& ...

  4. JS基础_基本数据类型和引用数据类型

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. JS基础——数组API之数组操作(filter、map、some、every、sort)

    var arr = [1,2,3,4];   forEach arr.forEach((item,index,arr) => { console.log(item) //结果为1,2,3,4 } ...

  6. js基础---数组方法

    数组数据的排序及去重 sort无形参的排序方式 arr1=[2,12,3,15]; var a=arr1.sort();console.log(arr1);console.log(a);//排序会改变 ...

  7. JS基础——常见的数据类型

    常见的数据类型 原始类型(基本类型)包括 :number.string.boolean.null.undefind 引用类型包括 :object,其中object中又分 Function.Array. ...

  8. js基础——数组的概念及其方法

    数组: 概念:是一种特殊的对象. 与普通对象的区别:a.普通对象使用字符串作为属性名,而数组使用数字作为索引来操作元素: b.数组的存储性能比普通对象好 数组的标志:[ ] 数组的索引:是从0开始的整 ...

  9. js基础----数组

    1.数组如何定义 //第一种定义方法 var arr=[1,2,3,4]; //第二种定义方法 var arr=new Array(1,2,3,4); 两者没有任何区别,[]的性能可能略高,因为代码短 ...

随机推荐

  1. RESTframwork之视图view

    一 在view.py 中: class AuthorView(APIView): def get(self, request): author_list = Author.objects.all() ...

  2. Python开发之AJAX

    一.概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用:一个简单操作 ...

  3. 02-spark sql

    1.概念 Spark SQL是一个用来处理结构化数据的Spark组件. 优点:  ①SparkSQL是一个SQL解析引擎,将SQL解析成特殊的RDD(DataFrame),然后在Spark集群中运行 ...

  4. Linux的用户

    添加用户 添加删除用户 # useradd user # passwd user Changing password for user user. New password: BAD PASSWORD ...

  5. switch的穿透,是参数里包含case内容就执行。

    package rom; import java.lang.*; /* * switch的穿透,是参数里包含case内容就执行. */ public class Xamle_5 { public st ...

  6. 重识linux-SSH中的SFTP

    重识linux-SSH中的SFTP 1 SFTP也是使用SSH的通道(port 22) 2 SFTP是linux系统自带的功能 3 连接上主流的ftp软件都支持sftp协议 比如flashfxp,fi ...

  7. 复习 HTML

    1.<b></b>:加粗 <i></b>:斜体 <u></u>:文字下划线 <s></s>:文字删除线 ...

  8. taotao商城

    (1)写Dao层(大概是sqlMapConfig.xml,application-dao.xml,mapper), 配置顺序和内容,看下图:

  9. kubernetes之deployment滚动升级

    参考:https://blog.51cto.com/wutengfei/2116663 创建和管理多个Pod--Deployment Deployment 为 Pod 和 ReplicaSet 提供了 ...

  10. PHP下进行XML操作(创建、读取)

    PHP下可以使用DOMDocument类对XML或者HTML文件进行读写操作 更为简单的方法使用simpleXML类操作XML DOM节点分为 元素节点 属性节点 值节点 注释节点 根节点(docum ...