一、数组去重
示例:定义一个数组,去重
1.indexOf()方法
indexOf()
方法返回在数组中可以找到第一个给定元素的第一个索引,如果不存在,则返回-1。
let arr = [1, 2, 3, 4, 6, 8, 1, 7, 6, 2];
let arr1 = arr.filter((item, index) => {
return arr.indexOf(item) === index;
});
console.log(arr1);
- 使用filter方法过滤出
indexOf()方法找到数组元素的第一个索引等于当前索引的数组元素,放到一个新数组里并返回。
也可以这样写:
let arr = [1, 2, 3, 4, 6, 8, 1, 7, 6, 2];
let arr1 = [];
arr.forEach((item) => {
if (arr1.indexOf(item) == -1) {
arr1.push(item);
}
});
console.log(arr1);
- 首先声明一个新的空数组,使用forEach()方法循环原数组的每一项,让新数组使用indexOf方法,如果新数组里没有原素组给定的元素就把这个元素依次放入新数组中
2. includes()方法
includes()
方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true
,否则返回 false
。
let arr = [1, 2, 3, 4, 6, 8, 1, 7, 6, 2];
let arr1 = [];
arr.forEach((it) => {
if (arr1.includes(it)) return;
arr1.push(it);
});
console.log(arr1);
3.Array.from()
let arr = [1, 2, 3, 4, 6, 8, 1, 7, 6, 2];
let arr1 = Array.from(new Set(arr));
console.log(arr1);
二、求数组每一项之和
1.for循环
let arr = [1, 2,4,5,12,56];
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
console.log(sum);
- 定义变量sum、i 等于0,使用for循环,通过数组索引让数组的每一项元素依次循环相加,并赋值给sum
2. forEach
let arr = [1, 2, 4, 5, 12, 56];
let sum = 0;
arr.forEach((item) => {
sum += item;
});
console.log(sum);
- 定义一个变量sum=0,使用forEach循环数组的每一项并依次相加赋值给sum
3.reduce方法
let arr = [1, 2, 4, 5, 12, 56];
let sum = arr.reduce((acc, item) => {
return acc += item;
}, 0);
console.log(sum);
- acc是索引,item是数组的每一项,0代表acc的第一次取值,第二次循环acc是上一次计算的结果,然后将每次循环的结果相加赋值给一个已定义变量sum,接收求和值
注:以上方法解释说明如有不当,请见谅。
三、拿取指定字符
示例:拿取一个链接里的指定内容,拿取:路由重定向
let url ="https://so.csdn.net/so/search?spm=1001.2014.3001.4501&q=路由重定向&t=&u=";
let str = url.split("&")[1].split("=")[1];
console.log(str);
- 使用split方法将这个字符串以&符分隔成数组元素,并拿取索引为1的数组元素,即:q=路由重定向,然后用=符分隔,再次拿取索引为1的数组元素为:路由重定向
四、 数组方法案例
1.获取一个随机数,按顺序插入到数组中,定义数组 let arr = [2, 4, 5];
let arr = [2, 4, 5];
let num = Math.round(Math.random() * 10);
arr.push(num);
let arr1 = arr;
console.log(arr1.sort());
2.把所有status 为true的 过滤出来拿到拼接的name,最终效果:奥特曼1,奥特曼3,奥特曼4
let arr = [
{name: "奥特曼1",id: 1,status: true,},
{name: "奥特曼2",id: 2,status: false,},
{name: "奥特曼3",id: 3,status: true,},
{name: "奥特曼4",id: 3,status: true,},
{name: "奥特曼5",id: 3,status: false,},
];
let arr1 = arr.filter((it) => it.status);
let res = [];
arr1.forEach((item) => res.push(item.name));
console.log(res.join(","));