javascripts知识点梳理3_数组和字符串处理

javascripts知识点梳理3_数组和字符串处理

数组

创建数组

通过new 方式 创建var 数组名 = new Array() ;
通过字面量的形式 var 数组名 = [ ]

1
2
3
4
5
6
7
// 创建了一个空数组
var arr = new Array();
// 创建了一个数组,里面存放了3个字符串
var arr = new Array('zs', 'ls', 'ww');
// 创建了一个数组,里面存放了4个数字
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] // 记得打call~!

规律:
我们发现 从数组中取出每一项 代码是重复的唯一不一样的就是 索引值在递增

- 遍历就是把每个元素从头到尾都访问一次 (类似我们每天早上学生的点名)
- 通过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++) {
// 找出 大于 10 的数
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 = [];
// 空数组的默认的长度为 0
console.log(newArr.length);

// 定义一个变量 用来计算 新数组的索引号
for (var i = 0; i < arr.length; i++) {
// 找出 大于 10 的数
if (arr[i] != 0) {
// 给新数组
// 每次存入一个值, newArr长度都会 +1
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 一定是接受方 arr 是 输送方
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]
// arr.push(100);
// arr = arr.pop();
// arr.shift()
// arr.unshift(100)
// arr.reverse(); 数组翻转
// var a = arr.indexOf(100)
// arr = arr.join(','); 数组转字符串
// arr.splice(2, 2); //数组删除 返回值去掉的部分var1 第几个开始,var2 截取几个
// arr1 = arr.slice(2, 3) 数组截取
// arr2 = arr.splice(2, 1)
// arr1 = arr.sort(function(a, b) { 数组排序
// return a - b;
// })
// arr2 = arr.sort(function(a, b) {
// return b - a;
// })
// arr = arr.toString(); 数组转字符串
// var a = Array.isArray(arr); 判断是否为数组
// var arr2 = arr.concat(arr1); 将数组拼接
// var a = arr.indexOf(100) 判断有无
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.slice(1, 3);
// 第var1开始截到var2个
// str1 = str.split(',')
// str = str.substr(1, 2) 第var1开始截var2个
// str = str.substring(1, 3)
// 第var1开始截到var2个 与slice 相同但不接受负值
// str = str.toLocaleUpperCase()
// str = str.toLocaleLowerCase()
//
// for (var i = 0; i < str.length; i++) {
// str = str.replace('s', 'a')
// }
// str = str.charAt(2)
// str = str.indexOf('s')
console.log(str);
</script>


javascripts知识点梳理3_数组和字符串处理
http://www.dwyblog.cn/2019/03/03/javascripts知识点梳理3/
作者
幸福来敲门
发布于
2019年3月3日
许可协议