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)
}

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM