javascripts知识点梳理3_数组和字符串处理
数组
创建数组
通过new 方式 创建var 数组名 = new Array() ;
通过字面量的形式 var 数组名 = [ ]
1 2 3 4 5 6 7
| var arr = new Array();
var arr = new Array('zs', 'ls', 'ww');
var arr = new Array(1, 2, 3, 4);
|
设置和访问数组元素
1 2 3 4 5 6 7 8 9 10 11
| - 元素:数组中每个空间里存放的数据 - 下标 (索引) :用来访问数组空间的 序号 (数组下标从 0 开始) - 数组可以通过 下标 来 访问、设置、修改 对应下标空间 里的元素。
var arrStus = []; //1.通过下标 为对应空间 赋值 arrStus[0] = '大白很暖'; arrStus[1] = '有点儿意思'; arrStus[2] = '记得打call~!'; //2.通过下标 访问对应空间 里的值 alert(arrStus[1]); // '有点儿意思'
|
数组的length属性
数组.length 用来访问数组里空间的数量(数组长度)
数组的操作
push()、shift()、unshift()、reverse()、sort()、splice()、indexOf()
// 1 栈操作(先进后出)
push()
pop() //取出数组中的最后一项,修改length属性
// 2 队列操作(先进先出)
shift() //取出数组中的第一个元素,修改length属性
unshift() //在数组最前面插入项,返回数组的长度
// 3 排序方法
reverse() //翻转数组
sort(); //即使是数组sort也是根据字符,从小到大排序
// 带参数的sort是如何实现的?
// 4 操作方法
concat() //把参数拼接到当前数组
slice() //从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始
splice() //删除或替换当前数组的某些项目,参数start, deleteCount, options(要替换的项目)
// 5 位置方法
indexOf()、lastIndexOf() //如果没找到返回-1
// 6 迭代方法 不会修改原数组(可选)
every()、filter()、forEach()、map()、some()
// 7 方法将数组的所有元素连接到一个字符串中。
join()
查找数组中第一个符合条件的数组
1 2 3 4 5 6 7 8 9
| arr.find(function(item){ return item.id = id; }) item为循环的当前项
循环数组 数组.forEach(function(item){ item为数的每一项 })
|
遍历数组所有成员
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| - 数组中的每一项我们怎么取出来
arrStus = ['大白很暖','有点儿意思','记得打call~!']; 第0项 arrStus[0] 第1项 arrStus[1] 第2项 arrStus[2] 规律: 我们发现 从数组中取出每一项 代码是重复的唯一不一样的就是 索引值在递增
- 遍历就是把每个元素从头到尾都访问一次 (类似我们每天早上学生的点名) - 通过for循环下标遍历
for(var i = 0; i < arrStus.length; i++){ console.log('arrStus['+ i +'] = ' + arrStus[i]); }
求一组数值 [2,6,1,7, 4] 的 和 还有 平均值 var arr = [2, 6, 1, 7, 4]; var sum = 0; var average = 0; for (var i = 0; i < arr.length; i++) { sum += arr[i]; } average = sum / arr.length; console.log('这组数的和是:' + sum); console.log('这组数的平均值是:' + average);
|
案例
将数组内容追加到新数组
1 2 3 4 5 6 7 8 9 10 11
| var arr = ['古丽扎娜', '迪丽热巴', '佟丽丫丫'];
var newArr = []; for (var i = 0; i < arr.length; i++) { if (arr[i] == '迪丽热巴') { newArr = arr[i]; } } console.log(newArr);
|
要求将数组 [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] 大于等于 10 的 元素选出来 ,放入 新数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
var j = 0; for (var i = 0; i < arr.length; i++) { if (arr[i] >= 10) { newArr[j] = arr[i]; j++; } } console.log(newArr);
|
数组去重
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 思路:
1. 需要一个新数组用于存放 筛选之后的数据。 2. 遍历原来的数组, 把不是0 的数据,添加到新数组里面( 此时要注意采用 数组名+下标 格式 接受数据) 3. 否知有空数据,我们新数组里面的个数,不断累加的用自己的length
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]; var newArr = []; console.log(newArr.length); for (var i = 0; i < arr.length; i++) { if (arr[i] != 0) { newArr[newArr.length] = arr[i]; } } console.log(newArr);
|
翻转数组
1 2 3 4 5 6 7
| var arr = ['red', 'green', 'blue', 'pink', 'purple']; var newArr = []; for (var i = 0; i < arr.length; i++) { newArr[i] = arr[arr.length - i - 1]; } console.log(newArr);
|
冒泡排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 我们先复习下 如何把2个变量 交换数据
var num1 = 10; var num2 = 20; var temp = num1; num1 = num2; num2 = temp; console.log(num1, num2);
var arr = [5, 4, 3, 2, 1]; for (var i = 0; i < arr.length - 1; i++) { for (var j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { var temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } console.log(arr);
|
数组操作练习
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <script> arr = [1, 4, 3, 6, 8, 8, 2, 9]; var arr1 = [100, 101] console.log(arr); </script>
|
数组去重
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| 编写一个方法去掉一个数组的重复元素 var array = ['c', 'a', 'z', 'a', 'x', 'a']; function clear() { var o = {}; for (var i = 0; i < array.length; i++) { var item = array[i]; if (o[item]) { o[item]++; }else{ o[item] = 1; } } var tmpArray = []; for(var key in o) { if (o[key] == 1) { tmpArray.push(key); }else{ if(tmpArray.indexOf(key) == -1){ tmpArray.push(key); } } } returm tmpArray; }
console.log(clear(array));
|
1 2 3 4 5 6 7 8 9 10 11 12
| var arr = ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']; var arr1 = []; for (var i = 0; i < arr.length; i++) { var tmp = arr[i]; tmp = tmp.toString(); if (arr1.indexOf(tmp) == -1) { arr1.push(tmp); }
} console.log(arr1);
|
字符串操作
字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串
1 字符方法
charAt() //获取指定位置处字符
charCodeAt() //获取指定位置处字符的ASCII码
str[0] //HTML5,IE8+支持 和charAt()等效
2 字符串操作方法
concat() //拼接字符串,等效于+,+更常用
slice() //从start位置开始,截取到end位置,end取不到
substring() //从start位置开始,截取到end位置,end取不到
substr() //从start位置开始,截取length个字符
3 位置方法
indexOf() //返回指定内容在元字符串中的位置
lastIndexOf() //从后往前找,只找第一个匹配的
4 去除空白
trim() //只能去除字符串前后的空白
5 大小写转换方法
str.toLocaleUpperCase() //转换大写
str.toLocaleLowerCase() //转换小写
6 其它
search()
replace()
split()
fromCharCode()
// String.fromCharCode(101, 102, 103); //把ASCII码转换成字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <script> var str = ' 1,sdssda '; str = str.trim(); { // str = str.replace('s', 'a') // } console.log(str); </script>
|