1.字符串方法
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>字符串常用api(简单的理解为函数或者方法)</title>
</head>
<body>
<script>
let str = "我是中国人";
console.log(str[0], str[1], str[2], str[3], str[4]);
// 索引取值范围:[0,4] [0,str.length - 1]
// 字符串长度
console.log(str.length);
// 索引 -> 元素
console.log(str[3]);
// 函数:charAt(3)
console.log(str.charAt(3));
// 元素 -> 索引
console.log(str.indexOf("中"));
let str0 = "The full name of China is the People's Republic of China.";
// search 还支持正则
console.log(str0.search("name"));
// 两种方法,indexOf() 与 search(),是相等的。
// 这两种方法是不相等的。区别在于:
// search() 方法无法设置第二个开始位置参数。
// indexOf() 方法无法设置更强大的搜索值(正则表达式)。
// 字符串的拼装
console.log(str.concat(",我们要爱自己的祖国"));
console.log(str + ",我们要爱自己的祖国");
console.log(`${str} ,我们要爱自己的祖国`);
// 字符串替换:replace("被替换的值", "替换新值")
console.log(str.replace("中国", "甘肃"));
// 字符串查询和取值
// slice 取子串
// 执行结果:从0开始到索引2之前结束(不含索引2的值)
console.log(str.slice(0, 2));
// substr:不知在哪结束,但是知道取多少个值
console.log(str.substr(2, 3));
// 从后往前取
console.log(str.substr(-3, 3));
// split:字符串 转为 数组
let s = "1-2-3-4-5";
// 用”-“切割
console.log(s.split("-"));
// 用空字符’‘进行分割,分割后即可转为数组
console.log(str.split(""));
// 设置返回数组数量
console.log(str.split("", 4));
// toLoweerCase:转为小写字母
// toUpperCase:转为大写字母
let str1 = "SDFFRFRF";
console.log(str1.toLowerCase());
let str2 = "dggghH";
console.log(str2.toUpperCase());
// 加链接
let url = `<a href="https://www.baidu.com">${str}</a>`;
console.log(url);
document.body.insertAdjacentHTML("afterbegin", url);
// 以上代码可以用函数link一步简化
console.log("-----------------------");
document.body.insertAdjacentHTML("afterbegin", "<br />");
document.body.insertAdjacentHTML("afterbegin", str.link("https://www.baidu.com"));
// 字符串加粗
document.body.insertAdjacentHTML("afterbegin", "<br />");
console.log(str.bold());
document.body.insertAdjacentHTML("afterbegin", str.bold());
</script>
</body>
</html>
2.数组api
2.1数组的创建和类数组转换
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>数组的创建和类数组转换</title>
</head>
<body>
<script>
// 字面量创建;
let cars = ["Saab", "Volvo", "BMW"];
console.log(cars);
// Array.of
// 服务器返回数组:a
let a = [1, 2, 3, 4, 5];
console.log(Array.of(1, 2, 3, 4, 5));
// console.log(Array.of(a));
console.log(Array.of(...a));
// 类数组
cars1 = {
0: "Saab",
1: "Volvo",
2: "BMW",
length: 3,
};
// 类数组是对象Object
console.log(cars1);
// 转为真正的数组:array.from
console.log(Array.from(cars1));
</script>
</body>
</html>
2.2数组的增删(两端)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>数组的增删</title>
</head>
<body>
<script>
// 数组的增删
// push, pop;
// unshift, shift;
let arr = [];
console.log(arr);
// push尾部添加,返回数组的元素数量
console.log(arr.push(10));
console.log(arr.push(20, 30));
console.log(arr);
// pop尾部删除,返回值是被删除的元素
console.log(arr.pop());
console.log(arr.pop());
console.log(arr);
// unshift:头部追加,返回数组的元素总数量
// unshift(15, 20, 30)从数组尾部30执行添加
console.log(arr.unshift(30, 20, 15));
console.log(arr);
// shift:头部删除,从右向左删除
// 返回被删除的元素
console.log(arr.shift());
console.log(arr.shift());
console.log(arr);
// 示例:push:尾部进入,shift:头部删除
console.log(arr.push("volvo", "bmw"));
console.log(arr);
console.log(arr.shift());
console.log(arr);
console.log(arr.shift());
console.log(arr);
</script>
</body>
</html>
2.3遍历数组的方法
2.3.1.foreach没有返回值,map有返回值
2.3.2.every和some
every 与:都满足返回true 否则false;
some 或:满足一个返回true 否则false
2.3.3.filter,find,findIndex
filter:只返回为真的元素组成的数组
find:返回满足条件的第一个元素
findIndex:找到返回元素索引下标,找不到返回-1
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>遍历数组的方法</title>
</head>
<body>
<script>
// 1.foreach,Map
let arr = [1, 2, 3, 4, 5];
// arr.forEach(function (当前元素的值, 值对应的索引, 数组本身) {
// 对数组中的每个元素逐个调用回调方式进行处理
// });
let res = arr.forEach(function (item, index, arr) {
console.log(item, index, arr);
document.body.append(item);
});
// 箭头函数简化
res = arr.forEach((item, index, arr) => {
console.log(item, index, arr);
document.body.append(item);
});
// foreach没有返回值,undefined
console.log(res);
// map:如果想要返回值,使用map
res = arr.map((item, index, arr) => [item, index, arr]);
res = arr.map((item) => item);
console.log(res);
// 将每个元素成2返回,返回一个新数组
res = arr.map((item) => item * 2);
console.log(res);
// 2.every,some
// every 与:都满足返回true 否则false
console.log("-------------------");
console.log(arr);
console.log(arr.every((item) => item >= 0));
console.log(arr.every((item) => item >= 3));
// some 或:满足一个返回true 否则false
console.log(arr.some((item) => item >= 3));
console.log(arr.some((item) => item >= 6));
// 3.filter,find,findIndex
// filter:只返回为真的元素组成的数组
console.log(arr.filter((item) => item >= 2));
// find:返回满足条件的第一个元素
console.log("--------");
console.log(arr.find((item) => item >= 2));
console.log("--------");
// findIndex:
console.log(arr.findIndex((item) => item >= 5));
const array1 = [5, 12, 8, 130, 44];
const isLargeNumber = (element) => element > 8;
console.log(array1.findIndex(isLargeNumber));
// expected output: 1
console.log(array1.findIndex((item) => item >= 6));
console.log("--------");
// 4.reduce
// reduce:归并
let acc = 0;
for (let i = 0; i < arr.length; i++) {
acc += arr[i];
}
console.log(acc);
// arr.reduce(function(累加器,当前元素的值, 值对应的索引, 数组本身)){
// }
res = arr.reduce(function (acc, cur, index, arr) {
console.log(`acc = ${acc},cur=${cur},index=${index},arr=${arr}`);
return acc + cur;
// 第二个值1500是初始值,不写默认0
}, 1500);
console.log(res);
// 简化代码:
res = arr.reduce((acc, cur) => acc + cur);
console.log(res);
</script>
</body>
</html>
2.4.数组元素排序和增、删、更新操作
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>排序</title>
</head>
<body>
<script>
//sort
let arr = [1, 13, 5, 18, 9];
// sort默认按字符串来排
console.log(arr.sort());
console.log(
arr.sort(function (a, b) {
return a - b;
})
);
// 倒序
console.log(
arr.sort(function (a, b) {
return b - a;
})
);
// 简化
console.log(arr.sort((a, b) => b - a));
// join:Array -> String
arr = ["red", "green", "blue"];
console.log(arr.join());
console.log(arr.join("-"));
console.log(arr.join("--"));
// split:字符串 转为 数组
let arr1 = arr.join(" - ");
console.log(arr1);
arr1 = arr1.split("-");
// 用”-“切割
console.log(arr1);
// slice:取子元素,字符串也有一个slice
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(arr);
console.log(arr.slice(3, 4));
console.log(arr.slice(3));
console.log(arr.slice(-7, -6));
// splce:删除,新增,替换
// 默认删除,返回被删除的元素
console.log(arr.splice(1, 2));
console.log(arr);
// 更新操作
// 从下表1开始,将2个元素4和5用a和b替换
console.log(arr.splice(1, 2, "a", "b"));
console.log(arr);
// 新增
console.log(arr.splice(1, 0, "red", "bmw"));
console.log(arr);
// 反转
</script>
</body>
</html>