首页 > 解决方案 > 访问对象中的嵌套键并将它们与其他对象键进行比较,但第二个是对象数组

问题描述

所以我遇到了这个问题,试图比较和访问嵌套对象中的数据,并将 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 as 遍历成员,members.forEach((member) => { if (Object.keys(updates) === member.name) } 但它似乎不起作用。更新中的警告等信息最初没有声明,但会在某些更改后出现在状态中。

标签: javascriptarraysreactjsobject

解决方案


你可以使用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);


推荐阅读