有没有一种方法可以避免以下代码中的if..else条件,并且可以单行执行?

var myObject = {},
    data = ["Chennai", "Thoothukkudi", "Madurai",
            "Coimbatore", "Trichy", "Salem", "Tirunelveli",
            "Erode", "Vellore", "Tiruppur"];

data.forEach(function(currentCity) {
    if (currentCity[0] in myObject) {
        myObject[currentCity[0]].push(currentCity);
    } else {
        myObject[currentCity[0]] = [currentCity];
    }
});

console.log(myObject);


输出量

{ C: [ 'Chennai', 'Coimbatore' ],
  T: [ 'Thoothukkudi', 'Trichy', 'Tirunelveli', 'Tiruppur' ],
  M: [ 'Madurai' ],
  S: [ 'Salem' ],
  E: [ 'Erode' ],
  V: [ 'Vellore' ] }


问题是,我必须在代码中的许多地方进行此if..else检查。如果我在8个地方执行此操作,则总共会增加40行。因此,我正在寻找一种可以单行编写的方法。

在Python中,有一个叫做defaultdict的东西,一个普通字典也可以与setdefault函数一起使用。是否有任何简洁,短(行数少)的方法来做到这一点?

最佳答案

像这样:

myObject[currentCity[0]] = myObject[currentCity[0]] || [];
myObject[currentCity[0]].push(currentCity);

09-25 15:54