簡體   English   中英

訪問對象中的嵌套鍵並將它們與其他對象鍵進行比較,但第二個是對象數組

[英]Accessing nested keys in object and compare them to other object keys, but the 2nd one is an array of objects

所以我在嘗試比較和訪問嵌套對象中的數據並將 tham 與帶有對象的數組進行比較時遇到了這個問題(這不是嵌套的)。

模擬它看起來像這樣:

const members = [
      {
        name: 'Angelica',
        age: '25',
        sex: 'female',
        phone: '123456789',
      },
      {
        name: 'Dominic',
        age: '30',
        sex: 'male',
        phone: '987654321',
      },
    ];

    const updates = {
      123456789: {
        date: '12.02-2019',
        warnings: {},
        errors: {}
      },
      987654321: {
        date: '20.01-2020',
        warnings: {
          somethinghere: {
            warning1: 'warning',
            allok: 'yes',
          }
        },
        errors: {},
      }
    }

所以首先我需要檢查成員中的電話是否等於對象中的鍵,然后我需要找出是否有任何警告(警告不為空)。 我試圖循環使用 forEach 作為members.forEach((member) => { if (Object.keys(updates) === member.name) }但它似乎不起作用。信息像警告更新最初並未聲明,但會在某些更改后出現在狀態中。

您可以使用mapObject.keys方法。

 const members = [ { name: 'Angelica', age: '25', sex: 'female', phone: '123456789', }, { name: 'Dominic', age: '30', sex: 'male', phone: '987654321', }, ]; const updates = { 123456789: { date: '12.02-2019', warnings: {}, errors: {} }, 987654321: { date: '20.01-2020', warnings: { somethinghere: { warning1: 'warning', allok: 'yes', } }, errors: {}, } } var result = members.map(({phone}) => ({phone, hasWarnings: Object.keys(updates[phone].warnings).length > 0}) ); console.log(result);

Object.keys(updates)是一個數組,所以你應該使用includes

if (Object.keys(updates).includes(member.phone) )

 const members = [ { name: 'Angelica', age: '25', sex: 'female', phone: '123456789', }, { name: 'Dominic', age: '30', sex: 'male', phone: '987654321', }, ]; const updates = { 123456789: { date: '12.02-2019', warnings: {}, errors: {} }, 987654321: { date: '20.01-2020', warnings: { somethinghere: { warning1: 'warning', allok: 'yes', } }, errors: {}, } } members.forEach(member => { Object.entries(updates).forEach(([key, value]) => { if(key === member.phone && JSON.stringify(value.warnings) === '{}'){ console.log(key) } }) })

( JSON.stringify(obj) === '{}'檢查對象是否為空)

你可以做const update = updates[member.phone]; 查看更新是否可用,如果更新密鑰集中不存在這樣的電話,則這將是未定義的。

然后const warnings = Object.keys(update.warnings); 會給你警告鍵列表。

 const members = [{ name: 'Angelica', age: '25', sex: 'female', phone: '123456789', }, { name: 'Dominic', age: '30', sex: 'male', phone: '987654321', }, ]; const updates = { 123456789: { date: '12.02-2019', warnings: {}, errors: {} }, 987654321: { date: '20.01-2020', warnings: { somethinghere: { warning1: 'warning', allok: 'yes', } }, errors: {}, } } members.forEach((member) => { const update = updates[member.phone]; if (update) { const warnings = Object.keys(update.warnings); console.log(warnings); if (warnings.length === 0) { console.log(`no warnings for member ${member.name}'s update`); } } else { console.log(`no updates for member ${member.name}`); } });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM