1.创建数组
var arr1 = []
var arr2 = new Array(2,3,'你好世界');
2.数组包含的方法
2.1判断一个变量是一个数组
// 1)instancof
// arr instancof Array, true就是数组,如果不为true就不是数组
// 2)Array.isArray(arr) true就是数组,如果不为true就不是数组
var arr1;
var arr = [1, 2, 3, 4, 5];
console.log(arr1 instanceof Array)//false
console.log(Array.isArray(arr))
2.2 反转数组 reverse(arr)
var arr = [1, 2, 3, 4, 5];
function reverse(arr){
if(Array.isArray(arr)){
var newArr=[];
for(var i = arr.length-1;i>=0;i--){
newArr[newArr.length] = arr[i]
}
return newArr;
}else{
return alert('这不是一个数组')
}
}
console.log(reverse(arr))
2.3 给数组添加新数值 删除数值
// 1.push函数将10推到数组中去,并且返回arr的新长度 ,压到最后面
// 2.pop 函数将10弹出去, 并且返回弹出去的值!!!弹出去最后面的值
// 3.unshift 压入
// unshift压到数组中的最前面,并且返回数组的新长度
// 4.shift 弹出
// shift 函数将100 弹出去, 并且返回弹出去的值!!! 弹出去最前面的值
-
push pop都是对数组最后面的数起作用
-
unshift shift 都是对数组最前面的数起作用
-
push unshift 都是添加数值 且返回新数组的长度
-
pop shift 都是删除数值 且返回删除的数值
2.4 反转数组 reverse()
console.log(arr.reverse())
2.5数组排序
//数组从小到大排序
arr.sort(function(a,b){
return a-b;
})
console.log(arr)
//数组从大到小排序
arr.sort(function(a,b){
return b-a;
})
console.log(arr)
- 若a-b则为从小到大
- 若b-a则为从大到小
2.6获取数组中元素的索引值
- indexOf(value) 获取到数组中第一个为value的索引值!!!
- lastIndexOf(value)获取到数组中最后一个为value的索引值!!!
- ☆☆☆☆☆☆☆☆
- indexOf(value) lastIndexOf(value) 获取不到value时 返回-1;
<script>
//获取数组中元素的索引值
var arr = ["red", "yellow", "pink", "yellow"]
// indexOf(value) 获取到数组中第一个为value的索引值!!!
console.log(arr.indexOf('yellow'));
// lastIndexOf(value)获取到数组中最后一个为value的索引值!!!
//indexOf(value) lastIndexOf(value) 获取不到value时 返回-1;
console.log(arr.lastIndexOf('yellow'));
console.log(arr.lastIndexOf('blue'));//-1
</script>
2.7 数组转字符串
- 方法1
var arr = [1,2,3,4,5];
console.log(arr.toString())
console.log(String(arr));
- 方法2 使用join函数进行自定义分隔符
var arr = [1,2,3,4,5];
console.log(arr.join(' '))
2.8 数组遍历
arr.forEach(function(item){}) 需要传递函数进去item表示数组内的值1,2,3,4循环
var arr = [1, 2, 3, 4, 5]
arr.forEach(function(item){
console.log(item)
})
2.9 数组过滤 filter
arr.filter(function(item,index){}) 同理 item表示数组内的真正的值,index表示索引值,循环遍历,找出满足条件的值,返回出来 放到另一个数组内
过滤出来数组中大于5的数值
var arr1 = [23, 2, 1, 56, 6, 10]
var arr2 = arr1.filter(function(item,index) {
// console.log(index)
return item > 5
})
2.10 some 查找这个值是否存在于数组中!!!
找到数值,返回true 否则返回false
item表示数组内的真正的值,index表示索引值,循环遍历,找出满足条件的值,
只要找到一个就返回 true 跳出循环。
找到数值为1的
var arr3 = [6, 1, 3, 4, 10, 20]
var arr4 = arr3.some(function(item, index) {
return item == 1
})
console.log(arr4)
2.11 every 每一个
// 判断所有的值大等于10 所有数据大于等于10, 则返回true,有一个不满足条件就返回false
var arr5 = [10, 20 , 30 , 33, 22, 355, 11]
// 判断所有的值大等于10 所有数据大于等于10, 则返回true,有一个不满足条件就返回false
var res = arr5.every(function(item, index) {
return item >= 10;
})
console.log(res)
数组的去重
思路:
- 把数组中的每一项都取出来,
- 每取一个值,就要和新数组中进行对比,看是否有了这个字符,如果没有直接压入,如果有则抛弃
注意 每取一个值,就要和新数组中进行对比 if(newArr.indexOf(arr[i]) === -1)
- 取到一个value与新数组进行对比看新数组内有没有value 没有就返回 -1 ;就把这个数值添加到新数组中
<script>
// 把数组中的每一项都取出来,
// 每取一个值,就要和新数组中进行对比,看是否有了这个字符,如果没有直接压入,如果有则抛弃
var arr = ["a", "b", "c", "a", "d", "b"]
var newArr = [];
for(var i =0; i < arr.length;i++ ){
if(newArr.indexOf(arr[i]) === -1){//去到一个value与新数组进行对比看新数组内
有没有value 没有就返回 -1 ;就把这个数值添加到新数组中
newArr.push(arr[i]);
}
}
console.log(newArr);
</script>
3.字符串
3.1字符串的定义
- 方法1 单引号和双引号没有区别!!
var str = 'helloworld!!!';
console.log(str)
var str = "helloworld!!!";
console.log(str)
- 方法2 new String()运用构造函数
var str = new String('helloworld!!!')
console.log(str);
3.2 字符串具有不可变性
<script>
var str = "helloworld";
console.log(str[0]);
str[1]='E';
console.log(str);//helloworld 虽然给赋值了,但是没有发生变化!!!
// 字符串具有不可变性!!
</script>
3.3 字符串的提取
就像数组一样可以 str[index] index从零开始
如
var str = "helloworld";
console.log(str[0])// 为 h;
str[index]与str.charAt(index) 有什么区别 区别1:当index的取值不在str的长度范围内,str[index]放回undefined,charAt(index)放回空字符串; 区别2:str[index]不兼容ie6-ie8,charAt(index)可以兼容; 另:使用中括号[]的方式,不容易区分这个变量是字符串还是数组;
3.4字符查找(根据字符返回位置)
- obj.indexOf('value1',value2)
- value1代表查找的数 value2 代表从索引值为value2的位置开始查找;
<script>
//obj.indexOf('value1',value2)
//value1代表查找的数 value2 代表从索引值为value2的位置开始查找;
var str = "helloworld!!!";
console.log(str.indexOf('l'))//4
console.log(str.indexOf('o' , 4) )
// 第二个参数是从索引值为4的位置开始查找!!!
// console.log(str.lastIndexOf('l' ,4) )
</script>
3.5 由位置求出字符串中的字符
- charAt(index)
- charCodeAt(index)是将字符转换成Ascii
- String.fromCharCode(num) 将Ascii转为字符
<script>
var str = '你好';
//由位置求出字符串中的字符charAt(index);
console.log(str.charAt(0));
//charCodeAt(index)是将字符转换成Ascii
var str = "helloworld";
console.log(str.charCodeAt(0));
// ASCII 是什么。编码。。。utf8 gbk gb2312...
// String.fromCharCode(num) 将Ascii转为字符
console.log(String.fromCharCode(107));//k
</script>
3.6 字符串的合并concat()与截取 substr(num1,num2)
- 使用concat()进行连接字符串
- substr(num1,num2)截取字符串
- 第一个参数为从索引号为0 开始
- 第二个参数取几个字符
- -1是在最后一个位置 -2表示从倒数第二个位置开始截取
3.7 字符串的替换 replace()
- 字符串里面的字符进行替换 replace(" ", "")
// 字符串里面的字符进行替换 replace(" ", "")
// " " => ""
var str = "helloworld 改 革 春 风 吹 满 地 ";
console.log( str.replace(' ',''));
while(str.indexOf(" ") !== -1) {
str = str.replace(" ", "")
}
3.8 字符串转换为数组 使用split转换成数组
var str = "red,pink,blue";
console.log(str.split(','));
3.9 //trim剪切 去掉字符串头和尾部的空格 并返回一个新的字符串
var input = " asdfasdf asdf as asd sd "
var str = input.trim()
console.log(input)
console.log(str)
3.10 match 找到一个或多个正则表达式的匹配找到后以数组的形式返回过来,数据类型是对象
var str = '小明:大神么么哒,正好是我想要的,我的邮箱是xiaoming@qq.com小红:我老公最爱看这个了,我想给他一个惊喜,么么么哒,邮箱是xiaohong@sina.com我:好人一生平安,邮箱是wuyou@163.com'
var arr = str.match(/\w+@\w+\.\w+/g);
console.log(arr)
console.log(typeof arr)
arr.forEach(function(emil){
console.log(emil)
})
3.11字符串的拼接 concat
// var str1 = 'hello';
// var str2 = 'world';
// var str3 = str1.concat(str2);
// console.log(str3)//helloworld
3.12 search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果匹配到返回第一个匹配的index没有找到任何匹配的子串,则返回 -1。
var str1 = '好好学习,天天向上'
console.log( str1.search('学习'))//2
console.log(str1.search(/天天/g))//5
console.log(str1.search(/你好/g))//-1
3.13 slice(n,m) 左闭右开index从n截取,截取到m-1.提取字符串的片断,并在新的字符串中返回被提取的部分
var str2 = '法外狂徒,张三'
var str3 = str2.slice(2,4)
console.log(str3)//狂徒