今天在项目开发中遇到一个没遇到过的问题,这个问题是需要对比两个对象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)
}

  

  

js操作对象属性值为字符串的更多相关文章

  1. js操作对象属性用点和用中括号有什么不同

    书读百遍其义自见 学习<JavaScript设计模式>一书时,学习工厂模式这一章节,发现了对象后使用中括号的情况,如下: var Factory=function(type,content ...

  2. C#通过属性名字符串获取、设置对象属性值

    之前理工项目从这个博客找到了相对应的方法:C#通过属性名字符串获取.设置对象属性值 https://www.cnblogs.com/willingtolove/p/12198871.html

  3. 更新AD对象属性值

    1. 对于Set-ADUser不包含的对象属性,可以采用replace来操作 Set-ADUser -Identity 'UserA' -Replace @{userWorkstations = 'C ...

  4. Struts2 用 s:if test 判断String类型的对象属性值和单字符是否相等的问题

    Struts2 用 s:if test 判断String类型的对象属性值和单字符是否相等的问题   首先,这里所指的单字符形如:Y,男. 有两种做法: a. <s:if test='news.s ...

  5. OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言,使页面更简洁;

    OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言,使页面更简洁: 支持运算符(如+-*/),比普通的标志具有更高的自由度和更强的功能 ...

  6. js 获取对象属性个数

    js 获取对象属性个数 方法一: var attributeCount = function(obj) { var count = 0; for(var i in obj) { if(obj.hasO ...

  7. vue.js操作元素属性

    vue动态操作div的class 看代码: <!doctype html> <html lang="en"> <head> <meta c ...

  8. js 中对象--属性相关操作

    查询属性: 可以用 对象.属性 来查询属性和属性方法               或者                    对象[“属性”]  来查询属性和属性方法 演示代码: <script ...

  9. js对象属性值初始化封装函数

    在平常做项目的过程中,总是会遇到需要对一个已经定义过的对象的属性值进行初始化,且对象的属性值的类型有多种(string.number.array.object.boolean),为了方便自己就简单封装 ...

随机推荐

  1. webStorm安装以及集成git使用!

    一:安装webstorm 百度网盘地址:https://pan.baidu.com/s/1K96mg7WYHc6X3odtk7_f2g 密码:2cgd   二:破解webstorm 1:选择liste ...

  2. python - 流程控制基础习题

    #打印1 到100 的和** i = 0 s = 0 while i <100: i += 1 s += i print(s) print('1+2+,,100=',s) #打印字符A~Z fo ...

  3. angular4 防二次重复点击

    监听click事件, 默认三秒钟内的点击事件触发第一次的点击事件,也可以通过throttleTime自定义时间 只触发第一次 /** * <div (throttleClick)="g ...

  4. Linux 三剑客之sed命令总结

    sed ### sed ### .关键字取行 sed -n '/jpinsz/p' test.txt sed -n '/^d/p' test.txt .根据行数取行 sed -n '2,5p' tes ...

  5. 腾讯云的对象存储COS

    什么是对象存储COS Clound Object Storage,COS,专门为企业和开发者们提供能够存储海量的分布式存储服务,用户可以随时通过互联网对大量数据进行批量存储和处理,在任意位置存储和检索 ...

  6. [译文]程序员能力矩阵 Programmer Competency Matrix

    注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识. 计算机科学 Computer Science   2n (Level 0) n2 (Level 1) n (Leve ...

  7. spring data elasticsearch 使用

    很久之前就安装了elasticsearch,一直没用java用过,最近看了一下spring data系列的elasticsearch,这里写一篇心得. 如果尚未安装elasticsearch,可以 参 ...

  8. 面试被问到SPI总结

    SPI驱动框架 枚举过程 drivers/spi/spi.c: spi_register_board_info /* 对于每一个spi_master,调用spi_match_master_to_boa ...

  9. PTA基础编程题目集6-5求自定类型元素的最大值 (函数题)

    原题目: 本题要求实现一个函数,求N个集合元素S[]中的最大值,其中集合元素的类型为自定义的ElementType. 函数接口定义: ElementType Max( ElementType S[], ...

  10. java虚拟机内存管理

    1. java虚拟机内存如下 2. 运行时数据区 内存图分析: