在JS中定义一个列表,列表里嵌套字典,我怎么实现对列表内字典的查找和删除?

在JS中定义一个列表,列表里嵌套字典,我怎么实现对列表内字典的查找和删除?

@State ConnectedList: any[] = [
 {
   'Name':'Redmi-30',
   'IP':'IP:192.168.1.20',
   'MAC':'MAC:a4:45:19:d5:37:5a'
 },
 {
   'Name':'Redmi-31',
   'IP':'IP:192.168.1.20',
   'MAC':'MAC:a4:45:19:d5:37:5a'
 },
]

JS中没有pop del方法

请问怎么对这个列表内的字典进行删除操作


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕凡 2022-01-14 15:45:22

同学,你好!

1、查找方法和python中对列表中字典查询的方法一样;

2、js中可以使用delete方法对数组(列表)类型中 map(字典)类型删除;

https://img1.sycdn.imooc.com//climg/61e129470935f18103150330.jpg

祝学习愉快~

  • 提问者 Klaus__ #1
    @State ConnectedList: any[] = [
     {
       'name':'Redmi-30',
       'IP':'IP:192.168.1.20',
       'MAC':'MAC:a4:45:19:d5:37:5a'
     },
     {
       'name':'Redmi-31',
       'IP':'IP:192.168.1.20',
       'MAC':'MAC:a4:45:19:d5:37:5a'
     }
    ]
    ForEach
    (this.ConnectedList, (item) => {
     Flex({direction: FlexDirection.Row, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween}) {
       Column() {
         Text(item['Name']).fontColor(Color.Black).fontSize(ConfigData.font_16)
           .textAlign(TextAlign.Start).width('50%')
           .margin({ top: 10 })
         Text(item['IP'])
           .fontColor(Color.Black)
           .fontSize(ConfigData.font_16)
           .textAlign(TextAlign.Start)
           .width('50%')
         Text(item['MAC']).fontColor(Color.Black).fontSize(ConfigData.font_16)
           .textAlign(TextAlign.Start).width('50%')
       }
       Image('res/image/ic_settings_arrow.svg')
         .width($r('app.float.wh_value_50'))
         .height($r('app.float.wh_value_40'))
         .onClick(() => {
           this.addToBlacklist.open()
         })
     }
    })

    老师 这是我页面展示的一个列表,列表是从数组 ConnectedList 中获取Item,然后依次展示,每一个Item右边跟一个图片箭头,效果是这样的

    https://img1.sycdn.imooc.com//climg/61e12f96097db9ff02050091.jpg

    然后现在想实现的就是  我点击后,调用一个方法,怎么能把数组中指定的那个字典一整个删除掉,就是说要添加一个索引,点击那个箭头,然后把它对应的那个Item删掉,然后把这个删掉的item取出来,添加到另一个数组中去

    2022-01-14 16:11:37
  • 好帮手慕凡 回复 提问者 Klaus__ #2

    同学,你好!

    1、删除可以使用splice( )方法,可以返回删除的数据,其中有两个参数:第一个参数为从那个下标开始删除,第二个参数为从下标开始删除多少个元素;

    2、添加可以使用push( )方法:向数组的末尾添加一个或更多元素;

    如下图:同学可以使用push( )函数和splice( )函数

    https://img1.sycdn.imooc.com//climg/61e1383509f9036f06000402.jpg

    参考代码:

    any = [
      {
        'name':'Redmi-30',
        'IP':'IP:192.168.1.20',
        'MAC':'MAC:a4:45:19:d5:37:5a'
      },
      {
        'name':'Redmi-31',
        'IP':'IP:192.168.1.20',
        'MAC':'MAC:a4:45:19:d5:37:5a'
      }
    ]
    //删除Redmi-31并返回
    // console.log(any.splice(1,1))
    //创建新的数组
    var arrayobj=[]
    //将删除的数据添加到arrayobj数组,any.splice(1,1)为从下标1开始删除1个元素
    arrayobj.push(any.splice(1,1))
    //打印删除Redmi-31后any
    console.log(any)
    //打印arrayobj
    console.log(arrayobj)

    祝学习愉快~

    2022-01-14 16:46:06
  • 提问者 Klaus__ 回复 好帮手慕凡 #3

    解决了 谢谢老师   上面用的开发方法是eTS,现在在做鸿蒙开发

    2022-01-14 16:53:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师