数组方法
6.sort()
语法:
1.不传参:
数组.sort()
2.传参 :
数组.sort(function(a,b){return a-b})
数组.sort(function(a,b){return b-a})
作用:
1.不传参:
将数组内部的数据, 全部转换为 字符串一位一位的对比
2.传递参数:
a - b : 按照从小到大的排列方式
b - a : 按照从大到小的排列方式
3.返回值:
不传参数:
将排序后的数组返回
传参数:
将排序后的数组返回
// 6. sort() 不传参数
var arr = [3, 2, 20, 1, 100, 10000];
var tet = arr.sort();
console.log(arr); // [1, 100, 10000, 2, 20, 3]
console.log(tet); // [1, 100, 10000, 2, 20, 3] 得到一个新数组
// 传参 a , b
var tst = arr.sort(function (a, b) { return a - b });
console.log(tst); // [2, 5, 6, 10]
var tst = arr.sort(function (a, b) { return b - a });
console.log(tst); // [10, 6, 5, 2]
注意事项:
面试时不要直接说
数组.sort()/数组.sort(function(a,b){return a-b});
数组.sort(function(a,b){return b-a});
7.splice()
语法:数组.splice(开始索引,多少个)
数组.splice(开始索引,多少个,要插入的数据1,要插入的数据1,要插入的数据2,要插入的数据3,...)
【注意不是替换,而是剪切后放到该位置】
作用: 类似于剪切 如果有第三个或者更多的参数, 那么会将第三个开始的参数,追加到数组中, 位置是从开始截取的位置开始追加
返回值:截取到的数据(以数组的形成)
上述方法, 都能够改变原数组
8.slice();(面试常问)
语法:
数组.slice(开始索引,结束索引)
参考特点:
1.包头不包尾;包含开始索引,不包含结束索引
2.参数接受负数(相当于数.Length +负数)
3.参数可以不传递
=> 结束下标不传, 相当于 从开始下标复制到数组的末尾
=> 两个参数都不传递, 相当于从 [0] 复制到数组的末尾
作用:
类似于复制
返回值:
复制出来的数组
9. concat();
语法:
数组.concat(参数1,数据1,数据2,...);
作用:
将小括号内的数据。合并到当前数组中
返回值:
合并的数组返回出来
10.join();
语法:
数组.join('链接符');
作用:
作用:通过连接符,将数组的每一项合并起来,如果不传递连接符,默认按照逗号连接
返回值:
连接好的数据(字符串)
11. indexof
语法:
数组.indexof(下标)/数组.indexof(数据,从哪里开始)
作用:
在数组内寻找你传入的数据
返回值:
如果找到了,那么返回这个数据第一次出现的下标
如果没找到,,返回-1
12.lastIndexOf(默认从数组的末尾,找到[0])
语法:
数组.lastIndexOf(下标) /数组.lastIndexOf(数据,从哪里开始)
作用:
在数组内寻找你传入的数据
返回值:
如果找到了,那么返回这个数据第一次出现的下标
如果没找到,,返回-1
代码解析:
//7. splice()
// var arr = [1, 2, 3, 4, 5, 6, 7]
// 0 1 2 3 4 5 6
// // 传递两个参数
// var res = arr.splice(2, 3);
// console.log('arr:', arr); //[1, 2, 6, 7]
// console.log('res', res); // [3, 4, 5]
// // 传递多个参数
// var res = arr.splice(2, 3, 'QF001', 'QF002', [1, 2, 3], 'QF003', 'QF004', 'QF005') // 从 [2] 开始, 截取(剪切) 3个
// console.log('res:', res); // [3, 4, 5]
// console.log('arr:', arr); // [1, 2, 'QF001', 'QF002', [1, 2, 3], 'QF003', 'QF004', 'QF005', 6, 7]
// var res = arr.slice(3, 5);
// console.log(res); //[4 ,5] 不包含5
// console.log(arr); //[1, 2, 3, 4, 5, 6, 7]
/**
* 从 [3] 开始, 如果参数写了负数
* 相当于 数组.length + 负数 -> 7 + (-2) -> 7 - 2 -> 5
*
* 所以 (3, -2) 相当于 (3, 5)
*/
// var res1 = arr.slice(3, -2); // 相当于(3,5)
// console.log(res1);// [4,5]
// var res2 = arr.slice(-3, -2);// 相当于(4,5)
// console.log(res2);// [5]
// 注意 返回的是数组 小括号内是索引
// var res3 = arr.slice(4);
// console.log(res3);// [5, 6, 7]
// var res4 = arr.slice();
// console.log('复制后的 返回值:',res4); //[1, 2, 3, 4, 5, 6, 7]
// 8. concat();
// var arr = [1, 2, 3];
// var res = [4, 5, 6,];
// var newArr = arr.concat(res);
// console.log(newArr); //[1, 2, 3, 4, 5, 6]
// 9. join()
// var tet = arr.join('#');
// console.log(tet);//1#2#3#4#5#6#7 返回的不是数组
// 10. indexOf
// var tet1 = arr.indexOf(100);
// console.log(tet1); // -1
// var tet2 = arr.indexOf(2, 3);
// // 注意 方法名大小写
// console.log(tet2);//-1
// var tst = arr.lastIndexOf(3);
// var tst = arr.lastIndexOf(3, 4);
// console.log(tst);// 2
// // 返回下标
1. forEach
语法:数组.forEach(function(item,index,origin){遍历要执行的代码}
item : 遍历数组的当前项
index : item 对应的下标
origin : 对应的原数组
作用: 遍历数组
返回值: forEach 永远没有返回值,他的值永远是 undefined
2. map
语法:数组.map(function(item,index,origin){遍历要执行的代码}
参考 forEach
item : 遍历数组的当前项
index : item 对应的下标
origin : 对应的原数组
作用: 映射数组,映射出来一个数组长度与原数组一模一样的数组,但是新数组的值,取决于return
返回值: 映射出来的数组
使用for 循环遍历数组
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
3.filter
语法:数组.filter(function(item,index,origin){遍历要执行的代码}
item : 遍历数组的当前项
index : item 对应的下标
origin : 对应的原数组
作用: 过滤数组
返回值: 过滤后的新数组,过滤条件 取决于函数内的 return
4.find
语法:数组.find(function(item,index,origin){遍历要执行的代码}
item : 遍历数组的当前项
index : item 对应的下标
origin : 对应的原数组
作用: 查找数据
返回值: 在数组内找到的 第一个符合条件的数据(不是数组)
如果没有找到 返回 undefined
5.findindex
语法:数组.findindex(function(item,index,origin){遍历要执行的代码}
item : 遍历数组的当前项
index : item 对应的下标
origin : 对应的原数组
作用: 查找数据 第一次出现的 下标
返回值: 在数组内找到的第一个符合条件的 数据的 下标
如果没有找到 返回 undefined
6. every
语法:数组.every(function(item,index,origin){遍历要执行的代码}
item : 遍历数组的当前项
index : item 对应的下标
origin : 对应的原数组
作用: 判读数据里面 "每一项" 都符合条件
返回值: 一个布尔值
true 都符合条件
false 最少有一个不符合条件的
7.some
语法:数组.some(function(item,index,origin){遍历要执行的代码}
item : 遍历数组的当前项
index : item 对应的下标
origin : 对应的原数组
作用: 判读数据里面 "是否有一项" 符合条件
返回值: 一个布尔值
true 最少有一项满足
false 全都不满足
- 代码解析
// 1.forEach
var arr = [3, 5, 9, 12, 16, 7];
var res = arr.forEach(function (item, index, origin) {
console.log(item, index, origin);
});
//返回的是 每一项以及对应的值,而且还有原数组
// 2.map
var arr = [3, 5, 9, 12, 16, 7];
var res = arr.map(function (item, index, origin) {
return item * 2;
});
console.log(res);// [3,10,18,24,32,14]
// 3.filter
var arr = [3, 5, 9, 12, 16, 7];
var res = arr.filter(function (item, index, origin) {
return item % 2 == 0; //过滤条件为 偶数
});
console.log(res);// 12 16
// 4.find
var arr = [1, 2, 3, 4, 5, 6, 7,]
var res = arr.find(function (item, index, origin) {
return item > 3;
});
console.log(res);// [4,5,6,7,] 查找到符合条件的项
// 5.findIndex
var arr = [1, 2, 3, 4, 5, 6, 7,]
// 0 1 2 3 4 5 6
var res = arr.findIndex(function (item, index, origin) {
return item % 3 === 0;
});
console.log(res);// 2 查找到符合条件的第一吃出现的索引
// 6. every
var arr = [1, 2, 3, 4, 5, 6, 7,]
// 0 1 2 3 4 5 6
var res = arr.every(function (item, index, origin) {
// return item < 8;
return item < 6;
});
// console.log(res);// true
console.log(res); // false
// 7.some
var arr = [1, 2, 3, 4, 5, 6, 7,]
// 0 1 2 3 4 5 6
var res = arr.some(function (item, index, origin) {
// return item % 3 === 0; //数组中有符合条件的 也有不符合条件的
return item % 8 === 0;
});
// console.log(res);// true
console.log(res);// false
字符串
- 字面量的方式创建
- var str = 'QF001'
- 内置构造函数
- var str1 = new String('QF001');
字符串方法
1.charAt
语法: 字符串.chartAt(索引)
作用: 找到字符串中这个索引对应的文本
返回值: 查询到的值;如果没有找到,返回一个空字符串
2.charAtCodeAt
语法: 字符串.charAtCodeAt(索引)
作用: 找到字符串中这个索引对应的文本的 十进制编码
返回值: 查询到的值对应的编码;如果没有找到,返回一个NaN
3.toLowerCase
语法: 字符串.toLowerCase()
作用: 将字符串全部转换为 小写
返回值: 转换后的字符串
4.toUpperCase
语法: 字符串.toUpperCase
作用: 将字符串全部转换为 大写
返回值: 转换后的字符串
代码解析
var str = 'qf001'
// 01234
var res = str.charAt(2);
console.log(res); //0
小案例
//得到 obj ={a:1;b:2,c:3,d:4}
// 即 a 的次数为1 b 的次数为2 ...
var str = 'abbcccdddd';
// 0123456789
//字符串也可以当成数组来看
// 并且只能用for循环
// var Asum = 0;
// var Bsum = 0;
// var Csum = 0;
// var Dsum = 0;
// var obj = {};
// for (var i = 0; i < str.length; i++) {
// if (str[i] === 'a') {
// Asum++;
// }
// if (str[i] === 'b') {
// Bsum++;
// }
// if (str[i] === 'c') {
// Csum++;
// }
// if (str[i] === 'd') {
// Dsum++;
// }
// }
// obj.a = Asum;
// obj.b = Bsum;
// obj.c = Csum;
// obj.d = Dsum;
// console.log(obj);
// console.log('a:',Asum);
// console.log('b:',Bsum);
// console.log('c:',Csum);
// console.log('d:',Dsum);
// 优化为:
/*
1.利用for循环
2.str[0]='a'
obj = {} 有'a'
放到增 到 obj 里面 有则 为1
没有则 数量相加
obj[str[0]] ==》 obj['a'] === undefined 代表没有
(if else分支)判断没有'a'则为1
否则 数量增加
*/
for (var i = 0; i < str.length; i++) {
if (obj[str[0]] === undefined) {
obj[str[0]] = 1;
} else {
obj[str[0]]++;
}
}
console.log(obj);