字符串方法2
- indexOf 查找字符串 返回索引值 查找当前字符串的索引值 从左到右第一次出现的位置 如果没有找到返回-1 第二个参数表示 从第几个字符串后面开始找
var str ="124590"
console.log(str.indexOf("9"));
结果是4
var str ="124590"
console.log(str.indexOf("a"));
返回值是-1
var str ="124590"
if(str.indexOf("1")){
console.log("能找到");
}else{
console.log("不能找到");
}
结果是不能找到 如果用if做判断 要让索引值判断是否大于-1
var str ="124590"
if(str.indexOf("1")>-1){
console.log("能找到");
}else{
console.log("不能找到");
}
var str ="1234590"
console.log(str.indexOf("4",3));
结果是3 从第三个字符串往后找 返回的是字符串
var str ="1234590"
console.log(str.indexOf("3",3));
结果是-1
- lastIndexOf 从右往左找 返回该字符串的索引值
var str ="1234590"
console.log(str.lastIndexOf("9"));
结果是5
3.substring 返回一个字符串 第一个数字表示索引值 然后从该代表的字符串包括改字符串截取 字符数(个数) 的字符 和substr一样
var str ="abcdefg";
console.log(str.substring(0,4));//4代表从a包括a开始截取四个字符
结果是abcd 如果不写第二个参数就是截取到最后
- slice 当第二个参数是正数时和substring一样 不同的是 第二个参数可以写负数 表示截取到倒数第几个
var str ="abcdefg";
console.log(str.slice(0,4));
结果是abcd
var str ="abcdefg";
console.log(str.slice(0,-2));
结果是abcde
5.split 将字符串按照 指定的分隔符 切割成数组 第一个参数为标识符 第二个参数为切割个数 如果分隔符出现在字符串的开始或结尾,分别以空字符串开头,结尾
var str ="abcdefg";
console.log(str.split(""));
结果是["a", "b", "c", "d", "e", "f", "g"]
var str ="hello world how are you";
console.log(str.split(" "));
结果是["hello", "world", "how", "are", "you"]
var str ="hello world how are you";
console.log(str.split(" ",2));
结果是["hello", "world"]
var str= "helloworldnihao";
var str2=str.split("o");
console.log(str2);
console.log(str2.join("o"));
第一个结果是["hell", "w", "rldniha", ""] 第二个结果是helloworldnihao
6.trim 清空两侧的空格
var str =" 你好 ";
console.log(str.trim());
会清空两侧的空格 如果中间有空格不会清除 可用于input输入框
数组方法
改变原数组
- shift:将第一个元素删除并且返回删除元素,空即为undefined
- unshift:向数组开头添加元素,并返回新的长度
- pop:删除最后一个并返回删除的元素
- push:向数组末尾添加元素,并返回新的长度
- reverse:颠倒数组顺序
- sort:对数组排序
- splice:splice(start,length,item)删,增,替换数组元素,返回被删除数组,无删除则不返回
不改变原数组
- concat:连接多个数组,返回新的数组
- join:将数组中所有元素以参数作为分隔符放入一个字符
- slice:slice(start,end),返回选定元素
- map,filter,forEach,some,every等不改变原数组
- 创建数组
var arr = [];
字面量var arr = new Array(1,2,3);
构造函数var arr = new Array(5)
结果是[empty × 5]length: 5__proto__: Array(0)
创建空数组 数组长度为5var arr = Array(1,2);
内建函数
- length 可读可写 第二个参数可以写负数
var arr = [1,2,3,4,5,6,7,8];
delete arr[0];
console.log(arr.length);
结果是8 留了个空位
var arr = [1,2,3,4,5,6,7,8];
var arr =[];
console.log(arr);
该操作 直接把一个新的空数组的地址 付给了arr 原有的数组不存在了
var arr = [1,2,3,4,5,6,7,8];
arr.length =0;//可以改变
console.log(arr);
这样就变成空数组
- indexOf 没有的为-1
var arr = [1,2,3,4,5,6,7,8];
console.log(arr.indexOf(6));
结果是5
var arr = [1,2,3,4,5,[3],6,7,8];
console.log(arr.indexOf([3]));
结果为-1 没有数组[3] 是因为[3]不等于[3]
基本类型和引用类型
- 数值 字符串 布尔值 undefined null 可以直接写出来 比较简单的数据为基本类型 在比较的时候是直接按照值比较
- 对象 函数 数组 复杂的数据 按照值和地址比较
var a=[3] a存的是[3]的地址并不是她本身 可以通过这个地址找到【3】
var b =[3] b不等于a
var a =[];//a存的是空数组的地址
var b=a;//将a的地址赋值给b
a==b;
是a与b相等的
function t(stu) {
stu.name ="lily";//此时stu和x指向同一个对象 按照地址 找到对象 改变名字
stu = {name:"wangwu"};
}
var stu ={name:"lisi"};//stu存的是地址
t(stu);//传的是一个引用
console.log(stu.name); 重新赋值 和x没有关系
结果是lily
var lisi =[3];//手动存地址
var arr = [1,2,3,4,5,lisi,7,8];
console.log(arr.indexOf(lisi));
结果是5
var lisi =[3];
var arr = [1,2,"3",4,5,lisi,7,8];
console.log(arr.indexOf(3));
结果是-1 找不到
var lisi =[3];
var arr = [1,2,"3",4,5,lisi,7,8];
console.log(arr.indexOf(7,-3));
结果是6
- concat 数组的拼接 返回一个新的数组 存储的是引用类型为地址
var arr =[1,2,3,4,5];
var arr1 = [6,7,8];
var arr2 = arr.concat(arr1,arr1);
console.log(arr2);
结果是[1, 2, 3, 4, 5, 6, 7, 8, 6, 7, 8]
var lisi ={};
var arr =[1,2,3,4,lisi];
var arr1 = [6,7,8];
var arr2 = arr.concat(arr1);
lisi.age =18;
console.log(arr2);
结果返回{}里面有age 因为lisi存的是一个地址 就算打印在前 改变lisi在后 打印的结果也会发生改变
var lisi ={};
var arr =[1,2,3,[4]];
var arr1 = [6,7,8];
var arr2 = arr.concat(arr1);
arr[3][0] = 10
console.log(arr2);
结果数组里面的值也变为10
- join 数据拼接成字符串 返回新的字符串 不改变原数组 默认用逗号拼接 接受传参为拼接符
var arr =[1,2,3,4,56];
var str =arr.join();
console.log(str);
结果是1,2,3,4,56
var arr =[1,2,3,4,56];
var str =arr.join("");
console.log(str);
结果是123456
var arr =[1,2,3,4,56];
var str =arr.join("+");
console.log(str);
结果是1+2+3+4+56
- slice 提取数组的一部分 生成一个新的数组 不改变原有数组 从索引 取到索引 [)
var arr =[1,2,3,4,56];
console.log(arr.slice(1,2));
结果为2
数组元素的删除和增加
- pop 删除数组的最后一个元素 并且改变了原有数组 返回值为删除的那个元素 不能传参
var arr =[1,2,3,4,5,6];
arr.pop();
console.log(arr);
var arr =[1,2,3,4,5,6];
console.log( arr.pop());
结果是6
- shift 删除数组的第一个元素 改变原数组
var arr =[1,2,3,4,5,6];
arr.shift();
console.log(arr);
结果删除了1
var arr =[1,2,3,4,5,6];
console.log(arr.shift());
返回值是1
var arr =[1,2,3,4,5,6];
arr.shift();
arr.shift();
console.log(arr);
不会报错 删除1 2
- push 在末尾添加一个新元素 返回值是新数组的长度
var arr =[1,2,3,4,5,6];
arr.push(7,8,9); //可以是任意数据类型
console.log(arr);
结果是[1, 2, 3, 4, 5, 6, 7, 8, 9]
var arr =[1,2,3,4,5,6];
console.log(arr.push(7,8,9));
结果是9
- unshift 在开始添加一个新元素 返回值是新数组的长度
var arr =[1,2,3,4,5,6];
arr.unshift(1,2);
console.log(arr);
结果是[1, 2, 1, 2, 3, 4, 5, 6]
<body>
<div id="box"></div>
</body>
<script>
var oBox = document.getElementById("box");
var stu = {name:"lisi",age:"19"};
[].push.call(stu,oBox);//有些数组方法 对象可以借用一下
console.log(stu);
结果是{0: div#box, name: "lisi", age: "19", length: 1}
- splice(index ,num ,item1 , item2)
- index 从第几个开始删
- num 删除几个 为0 就是不删除
- item 要添加的新项目
var arr = [1,2,3,4,5];
arr.splice(2,1);
console.log(arr);
结果是[1, 2, 4, 5]
var arr = [1,2,3,4,5];
arr.splice(2,0,"hello");
console.log(arr);
结果是[1, 2, "hello", 3, 4, 5]