Object literals should not have duplicate keys. If you define an object with duplicate keys, the last one will overwrite any preceding ones.
Non-Compliant Code Examples
varx={a:b,['a']:b};varx={y:1,y:2};varx={'':1,'':2};varx={'':1,[``]:2};varfoo={0x1:1,1:2};// should be captured by no-octal
// var x = { 012: 1, 10: 2 };
varx={0b1:1,1:2};varx={0o1:1,1:2};varx={1n:1,1:2};varx={1_0:1,10:2};varx={"z":1,z:2};varfoo={bar:1,bar:1,bar(){}}varx={a:1,get['a'](){}};varx={a:1,seta(value){}};varx={a:1,b:{a:2},getb(){}};varx=({'/(?<zero>0)/':1,[/(?<zero>0)/]:2})// while we can't evaluate the value of the template string we will assume that
// two keys with the exact same template string will evaluate to the same key
constobj={props:{[`${classes.foo}${classes.bar}`]:():boolean=>{returnnull;},[`${classes.foo}${classes.bar}`]:():boolean=>{returnnull;},}}
Compliant Code Examples
varfoo={__proto__:1,two:2};varx={foo:1,bar:2};varx={'':1,bar:2};varx={'':1,' ':2};varx={'':1,[null]:2};varx={'':1,[a]:2};varx={[a]:1,[a]:2};+{geta(){},seta(b){}};varx={a:b,[a]:b};varx={a:b,...c}varx={geta(){},seta(value){}};varx={a:1,b:{a:2}};varx=({null:1,[/(?<zero>0)/]:2})var{a,a}=obj// should be captured by no-octal
// var x = { 012: 1, 12: 2 };
varx={1_0:1,1:2};// template literals should be valid as long as they are not exactly the same
constobj={props:{[`${classes.foo}${classes.bar}`]:():boolean=>{returnnull;},[`${classes.baz}${classes.bla}`]:():boolean=>{returnnull;},}}
Seamless integrations. Try Datadog Code Analysis
Datadog Code Analysis
Try this rule and analyze your code with Datadog Code Analysis
How to use this rule
1
2
rulesets:- javascript-best-practices # Rules to enforce JavaScript best practices.
Create a static-analysis.datadog.yml with the content above at the root of your repository
Use our free IDE Plugins or add Code Analysis scans to your CI pipelines