zoukankan      html  css  js  c++  java
  • js操作对象属性值为字符串

    今天在项目开发中遇到一个没遇到过的问题,这个问题是需要对比两个对象a和b,a是一个只有一个属性的对象,b是一个含有多个属性对象,如果b中包含和a一模一样的属性名和值,则把这个一样的属性和值从b中删除了。例如给的两个对象是以下类型:

        let a= {
          '场次':{id: '0',value: '周五'}
        }
        let b= {
          '场次':{id: '0',value: '周五'},
          '票种':{id: '0',value: 'VIP'},
        }
    

    问题: 

    1::如何比较a和b对象?

    因为a只是一个对象,而b是一个对象集。所以我们首先需要知道b中有没有这个对象,这里我们需要用到Object.keys这个方法。

    Object.keys方法是JavaScript中用于遍历对象属性的一个方法 。它传入的参数是一个对象,返回的是一个数组,数组中包含的是该对象所有的属性名。

    const key = Object.keys(a)[0]
    

    因为a对象只有一个属性值,所以我们Object.keys(a)[0]作为比较的属性名,然后我们比较具体的属性值,这里以id为标准。

    2:如何读取属性名为中文字符串的对象?

    这里我们需要知道JavaScript访问对象属性用点号和中括号的区别:

    点号后加标识符(静态的)
    中括号放字符串,字符串可以是动态的,obj['string'+variable]

    所以在这里我们可以这里得到属性值:

    const valobj = b[key]
    

      

    3:如何删除?

    这里我们需要知道delect操作符:

    它可以从一个对象中彻底删除一个属性

    当我们有值相同的时候,就可以删除这个属性和值

        if(valobj && valobj.id === a[key].id){
          delete b[key]
        }
    

      

    全部代码:

    let a = {
          '场次':{id: '0',value: '周五'}
    }
    let b  = {
          '场次':{id: '0',value: '周五'},
          '票种':{id: '0',value: 'VIP'},
    }
    const key = Object.keys(a)[0];
    const valobj = b[key]
    if(valobj && valobj.id === a[key].id){
          delete b[key]
          console.log(b)
    }
    

      

      

  • 相关阅读:
    kubernetes 用到的工具及组件
    kubernetes整个基础环境的准备
    docker可视化管理Portainer
    Docker Swarm的命令
    Docker网络设置及文件挂载
    Docker常见命令
    Docker 中国官方镜像加速
    Docker安装
    k8s中教你快速写一条yaml文件
    Kubernetes CoreDNS 状态是 CrashLoopBackOff 报错
  • 原文地址:https://www.cnblogs.com/momozjm/p/9011697.html
Copyright © 2011-2022 走看看