首页 > 解决方案 > 查看对象是否在嵌套对象中重复的最快方法

问题描述

我有以下嵌套对象

const ERR_CODES = {
    INVALID_CONSUMER_ID: {
        code: 1000,
        message: 'Invalid Consumer ID',
    },
    INVALID_MOBILE: {
        code: 1001,
        message: 'Invalid Mobile Number',
    },
    INVALID_ZIPCODE: {
        code: 1002,
        message: 'Invalid Zipcode',
    },
    INVALID_FIRST_NAME: {
        code: 1000,
        message: 'First Name',
    },
}

当两个对象具有相同的代码时,我想抛出一个错误,例如在示例中消费者 id 和名字都有 1000 的错误代码。通过我的ERR_CODESobj 并查看是否有任何代码重复的最快方法是什么?

标签: javascript

解决方案


您可以使用地图来跟踪代码并与之进行比较,如果代码已经是地图的一部分,则可能会引发错误。

const ERR_CODES = {
  INVALID_CONSUMER_ID: {
    code: 1000,
    message: 'Invalid Consumer ID',
  },
  INVALID_MOBILE: {
    code: 1001,
    message: 'Invalid Mobile Number',
  },
  INVALID_ZIPCODE: {
    code: 1002,
    message: 'Invalid Zipcode',
  },
  INVALID_FIRST_NAME: {
    code: 1000,
    message: 'First Name',
  }
};

let keys = Object.keys(ERR_CODES);
let codesMap = {};

for (let i = 0; i < keys.length; i++) {
  let key = keys[i];
  let obj = ERR_CODES[key];
  let code = obj.code;

  if (!codesMap[code]) {
    codesMap[code] = true
  } else {
    console.error('Duplicate');
  }
}

推荐阅读