【问题标题】:Replacing nested map array calls with a single filter method用单个过滤器方法替换嵌套映射数组调用
【发布时间】:2023-01-23 15:57:54
【问题描述】:

给定以下对象:

let data = { id: 1,
             pets: [
               {
                name: "",
                myPets: [ 
                  { 
                    name: ""
                    breed: ""
                  },
                  { 
                    name: "Jack"
                    breed: "poodle"
                  }

                ]
             ]
           }

寻找一种更简洁的方式来编写以下内容以检查至少一条在 myPets 数组中分配了宠物名称的记录。

我使用了两个嵌套的.maps 但不确定我是否可以使用.filter 完成以下操作,因为不确定如何使用.filter 来解决这个问题?

data.pets.map((pet) => {
  if (pet.myPets.length > 0) {
    pet.myPets.map((myPet) => {
      if (myPet.name) {
        console.log("Pet name found");
      } else {
        console.log("Pet name not found");
    });
  }
});

【问题讨论】:

    标签: javascript


    【解决方案1】:

    您可以使用 some() 方法而不是嵌套的 map 和 if 语句来检查 myPets 数组中是否至少有一条记录分配了宠物名称。

    if (data.pets.some(pet => pet.myPets.some(myPet => myPet.name))) {
      console.log("Pet name found");
    } else {
      console.log("Pet name not found");
    }
    

    这将检查是否有任何 pet 对象具有 myPets 数组,该数组至少有一个具有真实名称属性的对象,如果是真的,它将记录“找到宠物名字”,否则“找不到宠物名字”。

    【讨论】:

      猜你喜欢
      • 2021-08-26
      • 2022-01-13
      • 2017-04-28
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 2019-08-13
      • 2020-04-18
      • 2015-05-29
      相关资源
      最近更新 更多