学习笔记00

本文介绍了JavaScript中删除一个数组中元素的方法,通过数组过滤实现,并展示了两种根据相同部分找出所需内容的技巧。同时,讲解了如何处理字符串转换为纯净数组以及Promise类型数据的处理。此外,还详细阐述了路由跳转时携带参数的三种方式及其应用场景。
摘要由CSDN通过智能技术生成

一、JS数组中删除另一个数组

1.实例:

必选元素与可选元素用一个下拉框数据,
但是必选元素比可选元素的优先级高,
即必选一定不可选。
必选元素拥有所有元素的下拉框,
可选元素只有去掉必选元素内容的下拉框。

在这里插入图片描述

2.视频演示

https://www.bilibili.com/video/BV1HB4y137ab?spm_id_from=333.999.0.0&vd_source=86d2da9060e7f2692f22974d1b05784e

3.代码实现:

      this.elementList1 = this.elementList.filter((item) => {
        return name.mustElementIds.every((item2) => {
          return item.id != item2
        })
      })
      name.optionalElementIds = name.optionalElementIds.filter((item) => {
        return name.mustElementIds.every((item2) => {
          return item != item2
        })
      })

4.字段解释:

elementList:必选元素下拉框
elementList1 :可选元素下拉框
mustElementIds:必选元素已选元素
optionalElementIds :可选元素已选元素

5.代码基础框架:

      const arrList = List1.filter((item) => {
        return List2.every((item2) => {
          return item.Id != item2.Id;
        });
      });

字段解释:

arrList :需要的数据
List1:数组1
List2:数组2

数组数据类型:

list:[{
id:0,
name:'数组',
}]

6.学习延申

菜鸟教程:TypeScript 循环

for 循环

for ( 初始化; 条件; 增量){
    //语句 
}

for…in 循环

for (var val in list) { 
    //语句 
}

for…of循环

let someArray = [1, "string", false];
 
for (let entry of someArray) {
    console.log(entry); // 1, "string", false
}

forEach循环

let list = [4, 5, 6];
list.forEach((val, idx, array) => {
    // val: 当前值
    // idx:当前index
    // array: Array
});

every 循环

let list = [4, 5, 6];
list.every((val, idx, array) => {
    // val: 当前值
    // idx:当前index
    // array: Array
    return true; // Continues
    // Return false 将会停止此次循环
});

some 循环

let list = [4, 5, 6];
list.every((val, idx, array) => {
    // val: 当前值
    // idx:当前index
    // array: Array
    return false; // Continues
    // Return true 将会停止此次循环
});

map 循环

const arr2 = list.map((item) => { return item * 2 })

while 循环

while(condition)
{
   statement(s);
}

do…while 循环

do
{
   statement(s);
}while( condition );

二、两个数组中根据相同的部分找出需要的部分

1.简单案例

在数组中找出name='张三'

        var list = [{
            name: '张三',
            age: '19',
            class: '数学'
        }, {
            name: '李四',
            age: '22',
            class: '语文'
        }, {
            name: '赵六',
            age: '14',
            class: '生物'
        }]
        var data = list.find((item) => item.name === '张三')
        console.log(data)

在这里插入图片描述

2.找出数组1中对应数组2的内容

        var list = [{
            name: '张三',
            age: '19',
            class: '数学'
        }, {
            name: '李四',
            age: '22',
            class: '语文'
        }, {
            name: '赵六',
            age: '14',
            class: '生物'
        }]
        var list2 = [{
            name: '张三',
            score: 90,
        }, {
            name: '李四',
            score: 92,
        },]
        var data = list.map((item) => {
            return {
                ...item,
                score: this.list2.find((_item) => _item.name = item.name).score,
            }
        })
        console.log(data)

在这里插入图片描述

三、目标字符串经过变化,最后成为一个无杂数据的数组

1.实例

目标字符串192.168.10\n192.168.99\n\n\n
最终需要的结果:Array [ "192.168.10", "192.168.99" ]

想法,最开始想要一步解决,但是试过很多,都不太行,最后倒了两次才出来结果,感觉有点麻烦了,有优秀算法欢迎指出。

        var formEditTask = {};
        formEditTask.filterRules = "192.168.10\n192.168.99\n\n\n"
        //首先对字符串进行分割
        formEditTask.filterRule = formEditTask.filterRules.split("\n");
        var arr = [];
        //对获取到的数组进行筛选,将空数据剔除,这个是当时难住我的地方,最开始想要一步剔除,发现并不行
        for (var i = 0; i < formEditTask.filterRule.length; i++) {
            if (formEditTask.filterRule[i] !== '') {
                arr.push(formEditTask.filterRule[i])
            }
        }
        formEditTask.filterRule = arr
        console.log(arr)
        console.log(formEditTask)

最终结果:
filterRule就是最后需要的数组。
在这里插入图片描述

问题:

  1. this.$refs[name].resetFields();为什么有时候使用表单,在关闭之际会出现验证问题,有时候反倒是直接关闭,不会暴露验证问题?

四、获取到的返回数据是Promise类型的怎么办

解决:将获取方法加上async,await,此时再次获取数据即为常用的数据类型。

    async getOwningCityDataList() {
      const res = await ajax.get('api/gradingArea/queryProvinceList', 'sp_alarm')
      if (res.status == 200) {
        this.owningProvinceData = res.data
      } else {
        this.$Message.error(res)
      }
    },

五、路由跳转常用的三种携带参数的方式

1.第一种,参数会拼接在url中,获取参数用this.$route.query

this.$router.push('/multilevelReport?percent='+'xxx' )

2.第二种,参数也会拼接在url中,获取参数用this.$route.query

this.$router.push({
          path:'/multilevelReport',
          query:{ percent: 'xxx' },
        })

3.第三种,参数不会暴露在url地址中,获取参数用this.$router.params

例:this.$router.params.row

this.$router.push({
          name:'multilevelReport',
          params:{ percent: 'xxx' },
        })

推荐1(very):https://www.jianshu.com/p/77fe88ccd757
推荐2:https://blog.csdn.net/weixin_46453039/article/details/125757430

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coisini_甜柚か

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值