js基础-数组及数据类型
数组也是引用类型
构造函数创建数组
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基础-数组及数据类型的更多相关文章
- JS基础——数组总结
JS中数组被觉得是一种对象,慢慢的,怎么忽然感觉,JS中仅仅要能够独立出来的概念怎么都能够当成对象来解释呢?有点儿怀疑.继续学吧.先来总结一下JS中数组是怎样详细使用的. 一.创建 数组的创建在JS中 ...
- 百万年薪python之路 -- JS基础介绍及数据类型
JS代码的引入 方式1: <script> alert('兽人永不为奴!') </script> 方式2:外部文件引入 src属性值为js文件路径 <script src ...
- JS基础-数组的常用方法-冒泡排序
1.数组 1.关联数组 以数字作为元素下标的数组,就是索引数组. 以字符串作为元素下标的数组,就是关联数组. 2.js的关联数组 ex:在php中 $array=[& ...
- JS基础_基本数据类型和引用数据类型
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 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 } ...
- js基础---数组方法
数组数据的排序及去重 sort无形参的排序方式 arr1=[2,12,3,15]; var a=arr1.sort();console.log(arr1);console.log(a);//排序会改变 ...
- JS基础——常见的数据类型
常见的数据类型 原始类型(基本类型)包括 :number.string.boolean.null.undefind 引用类型包括 :object,其中object中又分 Function.Array. ...
- js基础——数组的概念及其方法
数组: 概念:是一种特殊的对象. 与普通对象的区别:a.普通对象使用字符串作为属性名,而数组使用数字作为索引来操作元素: b.数组的存储性能比普通对象好 数组的标志:[ ] 数组的索引:是从0开始的整 ...
- js基础----数组
1.数组如何定义 //第一种定义方法 var arr=[1,2,3,4]; //第二种定义方法 var arr=new Array(1,2,3,4); 两者没有任何区别,[]的性能可能略高,因为代码短 ...
随机推荐
- Spring Boot 整合mybatis-generator
Maven 引入 mybatis-generator插件 <build> <plugins> <plugin> <groupId>org.springf ...
- linux下用命令修改文件内容
修改test_modify.sh中的LICENSE_INFO test_modify.sh #!/bin/bash licenseInfo=LICENSE_INFO licenseProduct=LI ...
- mysql数据库创建编码及排序
编码 utf-8 排序 utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用. utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果 u ...
- docker私有仓库pull/push
相关条件: 登录 配置秘钥
- 重识linux-关于selinux
重识linux-关于selinux 1 selinux是一个内核模块,有美国国家安全局研发,主要在基因redhat分支的系统上实现,当初的设计是未了避免用户资源的误用, 而SELINUX使用的是MAC ...
- 《算法》第五章部分程序 part 2
▶ 书中第五章部分程序,包括在加上自己补充的代码,字符串高位优先排序(计数 + 插排),(原地排序),(三路快排,与前面的三路归并排序相同) ● 计数 + 插排 package package01; ...
- djangobb之debug-toolbar查看其sql
#djangobb之views show_forum(request, forum_id, full=True) default queries including duplicates ) Quer ...
- JAVA SpringBoot 项目打包(JAR),在打包成 docker 镜像的基本方法
1,打包 SpringBoot 项目,使用 IDEA 如下图 2,将 JAR 包上传到安装了 Docker 的 linux 服务器上,并且在相容目录下创建一个名为 Dockerfile 的文件 3,在 ...
- idea 设置某项目路径下的文件在点击浏览器预览时的前缀
01,我们在开发 HTML 页面的时候,可以通过点击右上角的浏览器图标,直接打开浏览器访问,大大方便了开发 02,但是我们在开发 PHP 的时候,一般会自己安装集成环境或者编译环境,从上面的截图我们会 ...
- jquery 全选操作
$(function(){ $("#checkedAll").change(function(){ if(this.checked){ $(".checkSingle&q ...