javascript 用单个filter方法替换嵌套的map数组调用

icomxhvb  于 2023-01-24  发布在  Java
关注(0)|答案(1)|浏览(101)

给定以下对象:

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");
    });
  }
});
hk8txs48

hk8txs481#

你可以使用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数组至少包含一个具有真实名称属性的对象,如果为真,则记录“已找到宠物名称”,否则记录“未找到宠物名称”。

相关问题