一、数组的求和
1、forEach()求和
let arr =[1,6,7,9,2,5,7]
let sum = 0 //初始化
arr.forEach((item,index)=>{ return sum = sum + item})
arr.forEach(item => sum = sum + item) //简写
console.log(sum);
2、for循环求和
let arr =[1,6,7,9,2,5,7]
let sum = 0
for (let index = 0; index < arr.length; index++) {
sum = sum + arr[index]
}
console.log(sum);
二、数组的过滤、拼接
把所有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(item=>arr[index].status ==true)
let arr2 = arr1.map(item=>item.name) //把arr1中的name放到新数组arr2中
//高级写法
//let arr3 = arr.filter(item=>item.status).map(item=>item.name).join(',')
console.log(arr2.join(','));
三、拿到我们想要的字符串
‘https://so.csdn.net/so/search?spm=1001.2014.3001.4501&q=路由重定向&t=&u=’
一个url地址,我们想要输出‘路由重定向’五个字
第一种写法
let url = 'https://so.csdn.net/so/search?spm=1001.2014.3001.4501&q=路由重定向&t=&u='
let url1 = url.slice(-11) //从最末尾截取11个字符
let url2 = url1.slice(0,5) //在截取的11个字符中截取路由重定向
console.log(url2);
这种方法在字符串比较长的时候并不太适用,我们需要一个一个数,太麻烦
第二种方法
let url = 'https://so.csdn.net/so/search?spm=1001.2014.3001.4501&q=路由重定向&t=&u='
let arr = url.split('&') //指定&分隔符字符串将url分割成子字符串数组
console.log(arr);
控制台输出 arr
这时候我们得到的数据就很好处理了,我们想要的字符串在arr数组里的第二项,索引为1
let str = arr[1].slice(2) //字符串的截取
console.log(str);
这样我们就能得到我们想要的目标字符串
简写
let url = 'https://so.csdn.net/so/search?spm=1001.2014.3001.4501&q=路由重定向&t=&u='
let arr = url.split('&')[1].split('=')[1]
console.log(arr);
四、数组的去重
第一种方法
let arr = [1,2,3,4,6,8,1,7,6,2]
let arr1 = []
arr.forEach(it=>{
if(arr1.indexOf(it)==-1){ //indexOf在数组中找到给定元素的索引
// 如果不存在,返回-1,执行 push
arr1.push(it) //我们可以判断是否等于-1来进行筛选
}
} )
console.log(arr1);
第二种方法
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 //如果包含则返回true,循环结束,否则走push
arr1.push(it)
} )
console.log(arr1);
第三种方法
Set
对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
Array.from()
方法对一个类似数组或可迭代对象创建一个新的
具体参考: Set对象
let arr = [1,2,3,4,6,8,1,7,6,2]
let arr2 =Array.from( new Set(arr))
console.log(arr2);
这种方法需要好好钻研一下
五、产生一个随机数,按顺序插入数组中
第一种写法,也是最原始写法----冒泡排序
let arr = [2,4,5]
let num = Math.floor(Math.random()*10)+1 //产生一个1-10的随机数,向下取整
arr.push(num)
for (let index = 0; index < arr.length-1; index++) { //冒泡排序
for (let j = 0; j < arr.length-1-index; j++) {
if(arr[j] > arr[j+1]){ //比较前后变量的值
let c;
c = arr[j+1] //交换前后变量的值
arr[j+1] = arr[j]
arr[j] = c
}
}
}
console.log(arr);
第二种写法
sort()
方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列时构建的
let arr = [2,4,5]
let num = Math.ceil(Math.random()*10+1) //生成一个随机数,向上取整
arr.unshift(num) //在数组开头添加
console.log(arr.sort((a,b)=>a-b)); //a和b为两个将要比较的元素
① 如果 arr.sort(a, b)
小于 0 ,那么 a 会被排列到 b 之前;
② 如果 arr.sort(a, b)
等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守。
③ 如果 arr.sort(a, b)
大于 0 , b 会被排列到 a 之前。