当属性可能不存在时,数组中对象属性的不同值

我正在基于对象数组中的单个属性创建一个不同值的数组。没有什么不寻常的,但我正在使用的 JSON可能没有那个属性。结果是我在新数组中获得了一个值为undefined. 有没有办法防止这种情况?


const cars = [{

    "name": "Toyota",

    "model": "Corolla"

  },

  {

    "name": "Toyota",

    "model": "Supra"

  },

  {

    "name": "Toyota",

    "model": "Rav4"

  },

  {

    "name": "Toyota"

  }

];


const distinctModels = [...new Set(cars.map(car => car.model))];


console.log(distinctModels);

编辑 - 我应该提到我有兴趣知道是否有办法在仍然使用new Set.


明月笑刀无情
浏览 205回答 3
3回答

吃鸡游戏

您可以对数组进行后期处理并过滤虚假值。const cars = [{ name: "Toyota", model: "Corolla" }, { name: "Toyota", model: "Supra" }, { name: "Toyota", model: "Rav4" }, { name: "Toyota" }];const distinctModels = [...new Set(cars.map(car => car.model))].filter(Boolean);console.log(distinctModels);

元芳怎么了

使用.hasOwnProperty来检查,如果财产的对象或不存在const cars = [{    "name": "Toyota",    "model": "Corolla"  },  {    "name": "Toyota",    "model": "Supra"  },  {    "name": "Toyota",    "model": "Rav4"  },  {    "name": "Toyota"  }];const distinctModels = []cars.forEach(function(e){e.hasOwnProperty('model')?distinctModels.push(e.model):false;});console.log(distinctModels);

慕仙森

您可以使用Array.prototype.flatMap在一个循环中完成它,当值不存在时返回一个空数组。const cars = [{   "name": "Toyota",   "model": "Corolla"},{   "name": "Toyota",   "model": "Supra"},{   "name": "Toyota",   "model": "Rav4"},{   "name": "Toyota"}];const distinctModels = [...new Set(cars.flatMap(car => car.model || []))];console.log(distinctModels);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript