处理数据---数组求和、去重、排序、数组过滤、拼接

一、数组的求和

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 之前。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值