noDuplicateObjectKeys
Summary
Section titled Summary- Rule available since: v1.0.0
- Diagnostic Category: lint/suspicious/noDuplicateObjectKeys
- This rule is recommended, which means is enabled by default.
- This rule doesn’t have a fix.
- The default severity of this rule is error.
Description
Section titled DescriptionDisallow two keys with the same name inside objects.
Examples
Section titled ExamplesInvalid
Section titled Invalid{  "title": "New title",  "title": "Second title"}code-block.json:2:3 lint/suspicious/noDuplicateObjectKeys ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ✖ The key title was already declared.
  
    1 │ {
  > 2 │   “title”: “New title”,
      │   ^^^^^^^
    3 │   “title”: “Second title”
    4 │ }
  
  ℹ This where a duplicated key was declared again.
  
    1 │ {
    2 │   “title”: “New title”,
  > 3 │   “title”: “Second title”
      │   ^^^^^^^
    4 │ }
    5 │ 
  
  ℹ If a key is defined multiple times, only the last definition takes effect. Previous definitions are ignored.
  
Valid
Section titled Valid{  "title": "New title",  "secondTitle": "Second title"}How to configure
Section titled How to configure{  "linter": {    "rules": {      "suspicious": {        "noDuplicateObjectKeys": "error"      }    }  }}Related links
Section titled Related linksSummary
Section titled Summary- Rule available since: v1.0.0
- Diagnostic Category: lint/suspicious/noDuplicateObjectKeys
- This rule is recommended, which means is enabled by default.
- This rule has an unsafe fix.
- The default severity of this rule is error.
- Sources:
- Same as no-dupe-keys
 
- Same as 
Description
Section titled DescriptionDisallow two keys with the same name inside objects.
If an object property with the same name is defined multiple times (except when combining a getter with a setter), only the last definition makes it into the object and previous definitions are ignored, which is likely a mistake.
Examples
Section titled ExamplesInvalid
Section titled Invalidconst obj = {     a: 1,     a: 2,}code-block.js:2:5 lint/suspicious/noDuplicateObjectKeys  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ✖ This property value named a is later overwritten by an object member with the same name.
  
    1 │ const obj = {
  > 2 │    	a: 1,
      │    	^^^^
    3 │    	a: 2,
    4 │ }
  
  ℹ Overwritten with this value.
  
    1 │ const obj = {
    2 │    	a: 1,
  > 3 │    	a: 2,
      │    	^^^^
    4 │ }
    5 │ 
  
  ℹ If an object property with the same name is defined multiple times (except when combining a getter with a setter), only the last definition makes it into the object and previous definitions are ignored.
  
  ℹ Unsafe fix: Remove this property value named a
  
    1 1 │   const obj = {
    2   │ - ···→ a:·1,
    3 2 │      	a: 2,
    4 3 │   }
  
const obj = {     set a(v) {},     a: 2,}code-block.js:2:5 lint/suspicious/noDuplicateObjectKeys  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ✖ This setter named a is later overwritten by an object member with the same name.
  
    1 │ const obj = {
  > 2 │    	set a(v) {},
      │    	^^^^^^^^^^^
    3 │    	a: 2,
    4 │ }
  
  ℹ Overwritten with this value.
  
    1 │ const obj = {
    2 │    	set a(v) {},
  > 3 │    	a: 2,
      │    	^^^^
    4 │ }
    5 │ 
  
  ℹ If an object property with the same name is defined multiple times (except when combining a getter with a setter), only the last definition makes it into the object and previous definitions are ignored.
  
  ℹ Unsafe fix: Remove this setter named a
  
    1 1 │   const obj = {
    2   │ - ···→ set·a(v)·{},
    3 2 │      	a: 2,
    4 3 │   }
  
Valid
Section titled Validconst obj = {     a: 1,     b: 2,}const obj = {     get a() { return 1; },     set a(v) {},}How to configure
Section titled How to configure{  "linter": {    "rules": {      "suspicious": {        "noDuplicateObjectKeys": "error"      }    }  }}