为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

明月笑刀无情 2021-08-26 17:01:36
我正在基于对象数组中的单个属性创建一个不同值的数组。没有什么不寻常的,但我正在使用的 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.
查看完整描述

3 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

您可以对数组进行后期处理并过滤虚假值。


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);


查看完整回答
反对 回复 2021-08-26
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

使用.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);


查看完整回答
反对 回复 2021-08-26
?
慕仙森

TA贡献1827条经验 获得超7个赞

您可以使用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);


查看完整回答
反对 回复 2021-08-26
  • 3 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信