我想知道是否有一种方法可以在数组push方法中添加条件?我只希望将'provinceCodes'属性添加到对象中(如果存在)。而不是在下面的if / else中执行此操作...我想知道是否有更清洁的方法?

const generateCountriesArray = (countriesObject) => {
const countries = [];
for (var key in countriesObject) {
    var country = countriesObject[key];

    if (typeof(country.provinceCodes) !== 'undefined')
    {
        countries.push({
            value: key,
            name: country.name,
            provinceCodes: country.provinceCodes
        });
    }
    else
    {
        countries.push({
            value: key,
            name: country.name
        });
    }
}
return countries;


};

最佳答案

您可以将object spreadshort-circuit evaluation一起使用。如果表达式provinceCodes !== undefined的结果为true,则短路将求值到包含provinceCodes的对象,并且价差会将属性provinceCodes添加到结果对象。如果不是,则表达式的计算结果为falsefalse将被丢弃。



const generateCountriesArray = (countriesObject) => {
  const countries = [];
  for (var k in countriesObject) {
    var { key, name, provinceCodes } = countriesObject[k];

    countries.push({
      value: key,
      name,
      ...provinceCodes !== undefined && { provinceCodes }
    });
  }
  return countries;
};


const countriesObject = {
  a: { key: 1, name: 1, provinceCodes: 1 },
  b: { key: 2, name: 2 },
};

console.log(generateCountriesArray(countriesObject));

10-01 03:26